Raku kurss / Pielikums 🆕 / Viss kopā / Jaukti miniprojekti / Exercises / Romiešu cipari
Risinājums: Romiešu cipari
Šeit ir iespējams risinājums uzdevumam.
Kods
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;🦋 Atrodiet programmu failā roman-numerals.raku.
Izvade
MCMXCIVKomentāri
Tabula uzskaita katru simbolu dilstošā vērtību secībā, arī atņemšanas formas, piemēram,
CM(900) unIV(4), tāpēc algoritmam tās nekad nav jāapstrādā atsevišķi.Katram ierakstam
whilepieliek simbolu un atņem tā vērtību tik reižu, cik tā ietilpst, tāpēc vispirms tiek izlietoti lielākie gabali.