tdd-katas/lib/roman_numerals.dart

25 lines
467 B
Dart

String integerToRoman(int number) {
const romanSymbols = {
10: 'X',
9: 'IX',
8: 'VIII',
7: 'VII',
6: 'VI',
5: 'V',
1: 'I',
};
if (_isSubtractiveCase(number)) {
return romanSymbols[1]! + romanSymbols[5]!;
}
if (_canRepeatSymbol(number)) {
return romanSymbols[1]! * number;
}
return romanSymbols[number] ?? '';
}
bool _isSubtractiveCase(int number) => number == 4;
bool _canRepeatSymbol(int number) => number < 4;