Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- final romanNumbers = {
- "I": 1,
- "V": 5,
- "X": 10,
- "L": 50,
- "C": 100,
- "D": 500,
- "M": 1000
- };
- void main()
- {
- var stopwatch = Stopwatch()..start();
- final int loopCount = 1000000;
- for(var i = 0; i < loopCount; i++) {
- romanToIntShamkhal('MCMXCIV');
- }
- print('Shamkhal\'s Code Executed in ${stopwatch.elapsed}');
- stopwatch = Stopwatch()..start();
- for(var i = 0; i < loopCount; i++) {
- romanToIntKanan('MCMXCIV');
- }
- print('Kanan\'s Code Executed in ${stopwatch.elapsed}');
- }
- int romanToIntShamkhal(String roman)
- {
- return roman.split('')
- .reversed
- .map((n) => romanNumbers[n])
- .reduce((curr, next) => curr > 2 * next ? curr - next : curr + next);
- }
- int romanToIntKanan(String romanNumber) {
- int calculatedResult = 0;
- for (int i = 0; i < romanNumber.length; i++) {
- var currentCharacter =
- new String.fromCharCode(romanNumber.runes.elementAt(i));
- var nextCharacter;
- if (i < romanNumber.length - 1) {
- nextCharacter =
- new String.fromCharCode(romanNumber.runes.elementAt(i + 1));
- }
- if (nextCharacter != null) {
- calculatedResult += romanNumbers[currentCharacter] *
- (romanNumbers[currentCharacter] >= romanNumbers[nextCharacter]
- ? 1
- : -1);
- continue;
- }
- calculatedResult += romanNumbers[currentCharacter];
- }
- return calculatedResult;
- }
Advertisement