Курс Raku / Додаток 🆕 / Збираємо все разом / Мішані міні-проєкти / Вправи / Римські цифри
Розв’язання: Римські цифри
Ось одне з можливих розв’язань задачі.
Код
my @table =
1000 => 'M', 900 => 'CM', 500 => 'D', 400 => 'CD',
100 => 'C', 90 => 'XC', 50 => 'L', 40 => 'XL',
10 => 'X', 9 => 'IX', 5 => 'V', 4 => 'IV',
1 => 'I';
my $n = 1994;
my $roman = '';
for @table -> $pair {
while $n >= $pair.key {
$roman ~= $pair.value;
$n -= $pair.key;
}
}
say $roman;🦋 Знайдіть програму у файлі roman-numerals.raku.
Вивід
MCMXCIVКоментарі
Таблиця перелічує кожен символ за спаданням значення, зокрема віднімальні форми на кшталт
CM(900) таIV(4), тож алгоритмові ніколи не доводиться розглядати їх окремо.Для кожного запису
whileдописує символ і віднімає його значення стільки разів, скільки той уміщається, тож найбільші шматки витрачаються першими.
Навігація курсом
← Римські цифри | Калькулятор зворотного польського запису →