Raku-Kurs / Anhang 🆕 / Alles zusammenbringen / Gemischte Mini-Projekte / Exercises / Römische Zahlen
Lösung: Römische Zahlen
Hier ist eine mögliche Lösung der Aufgabe.
Code
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;🦋 Du findest den Quellcode in der Datei roman-numerals.raku.
Ausgabe
MCMXCIVKommentare
Die Tabelle führt jedes Zeichen nach absteigendem Wert auf, einschließlich der subtraktiven Formen wie
CM(900) undIV(4), der Algorithmus muss sie also nie gesondert behandeln.Für jeden Eintrag hängt das
whiledas Zeichen an und zieht seinen Wert so oft ab, wie er hineinpasst, die größten Stücke werden also zuerst aufgebraucht.
Kursnavigation
← Römische Zahlen | Ein Rechner in umgekehrter polnischer Notation →