Maharramoff

Roman To Integer - Execution Time

Mar 24th, 2020
10,745
0
Never
2
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Dart 1.44 KB | None | 0 0
  1. final romanNumbers = {
  2.     "I": 1,
  3.     "V": 5,
  4.     "X": 10,
  5.     "L": 50,
  6.     "C": 100,
  7.     "D": 500,
  8.     "M": 1000
  9.   };  
  10.  
  11. void main()
  12. {
  13.     var stopwatch = Stopwatch()..start();
  14.     final int loopCount = 1000000;
  15.  
  16.     for(var i = 0; i < loopCount; i++) {
  17.         romanToIntShamkhal('MCMXCIV');
  18.     }
  19.  
  20.     print('Shamkhal\'s Code Executed in ${stopwatch.elapsed}');
  21.  
  22.     stopwatch = Stopwatch()..start();
  23.  
  24.     for(var i = 0; i < loopCount; i++) {
  25.         romanToIntKanan('MCMXCIV');
  26.     }
  27.  
  28.     print('Kanan\'s Code Executed in ${stopwatch.elapsed}');
  29. }
  30.  
  31.  
  32. int romanToIntShamkhal(String roman)
  33. {
  34.     return roman.split('')
  35.                 .reversed
  36.                 .map((n) => romanNumbers[n])
  37.                 .reduce((curr, next) => curr > 2 * next ? curr - next : curr + next);
  38. }
  39.  
  40. int romanToIntKanan(String romanNumber) {
  41.   int calculatedResult = 0;
  42.  
  43.   for (int i = 0; i < romanNumber.length; i++) {
  44.     var currentCharacter =
  45.         new String.fromCharCode(romanNumber.runes.elementAt(i));
  46.  
  47.     var nextCharacter;
  48.  
  49.     if (i < romanNumber.length - 1) {
  50.       nextCharacter =
  51.           new String.fromCharCode(romanNumber.runes.elementAt(i + 1));
  52.     }
  53.  
  54.     if (nextCharacter != null) {
  55.       calculatedResult += romanNumbers[currentCharacter] *
  56.           (romanNumbers[currentCharacter] >= romanNumbers[nextCharacter]
  57.               ? 1
  58.               : -1);
  59.       continue;
  60.     }
  61.  
  62.     calculatedResult += romanNumbers[currentCharacter];
  63.   }
  64.  
  65.   return calculatedResult;
  66. }
Advertisement