Maharramoff icon

Roman To Integer - Execution Time

Maharramoff | PRO | 03/24/20 12:10:56 PM UTC | 0 ⭐ | 10536 👁️ | Never ⏰ | []
Dart |

1.44 KB

|

None

|

0 👍

/

0 👎

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;
}

Comments

  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎

    
        
  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎