25 lines
467 B
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;
|