Raku-Kurs / Anhang 🆕 / Alles zusammenbringen / Gemischte Mini-Projekte / Exercises / Ein Rechner in umgekehrter polnischer Notation
Lösung: Ein Rechner in umgekehrter polnischer Notation
Hier ist eine mögliche Lösung der Aufgabe.
Code
my $expression = '3 4 + 5 *';
my @stack;
for $expression.words -> $token {
if $token ~~ / ^ \d+ $ / {
@stack.push($token.Int);
}
else {
my $b = @stack.pop;
my $a = @stack.pop;
@stack.push( do given $token {
when '+' { $a + $b }
when '-' { $a - $b }
when '*' { $a * $b }
when '/' { $a / $b }
});
}
}
say @stack[0];🦋 Du findest den Quellcode in der Datei rpn-calculator.raku.
Ausgabe
35Kommentare
Zahlen werden auf einen Stapel gepusht. Ein Operator poppt die beiden jüngsten Werte, verbindet sie und pusht das Ergebnis zurück — das Wesen der postfixen Auswertung.
do given $tokenverwandelt den Operator in die richtige Rechenart, und die Reihenfolge$a, dann$b(umgekehrt gepoppt) hält Subtraktion und Division herum, wie es sein soll.
Kursnavigation
← Ein Rechner in umgekehrter polnischer Notation | Ein Text-Histogramm →