Corso di Raku / Appendice 🆕 / Mettere tutto insieme / Mini-progetti misti / Exercises / Una calcolatrice in notazione polacca inversa
Soluzione: Una calcolatrice in notazione polacca inversa
Ecco una possibile soluzione del compito.
Codice
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];🦋 Trova il programma nel file rpn-calculator.raku.
Output
35Commenti
I numeri vengono spinti su una pila. Un operatore estrae i due valori più recenti, li combina e rispinge il risultato — l’essenza della valutazione postfissa.
do given $tokentrasforma l’operatore nell’operazione aritmetica giusta, e l’ordine$apoi$b(estratti al contrario) tiene sottrazione e divisione nel verso corretto.
Navigazione del corso
← Una calcolatrice in notazione polacca inversa | Un istogramma testuale →