import extensions; import system'collections; import system'routines; static RomanDictionary = new Dictionary() .setAt("I".toChar(), 1) .setAt("V".toChar(), 5) .setAt("X".toChar(), 10) .setAt("L".toChar(), 50) .setAt("C".toChar(), 100) .setAt("D".toChar(), 500) .setAt("M".toChar(), 1000); extension op : String { toRomanInt() { var minus := 0; var s := self.upperCase(); var total := 0; for(int i := 0, i < s.Length, i += 1) { var thisNumeral := RomanDictionary[s[i]] - minus; if (i >= s.Length - 1 || thisNumeral + minus >= RomanDictionary[s[i + 1]]) { total += thisNumeral; minus := 0 } else { minus := thisNumeral } }; ^ total } } public program() { console.printLine("MCMXC: ", "MCMXC".toRomanInt()); console.printLine("MMVIII: ", "MMVIII".toRomanInt()); console.printLine("MDCLXVI:", "MDCLXVI".toRomanInt()) }