Corso di Raku / Appendice 🆕 / Lavorare con i dati / Liste, array e hash / Exercises / Totali progressivi
Soluzione: Totali progressivi
Ecco una possibile soluzione del compito.
Codice
my @numbers = 2, 4, 6, 8;
my $sum = 0;
my @totals = @numbers.map({ $sum += $_ });
say @totals;🦋 Trova il programma nel file running-totals.raku.
Output
[2 6 12 20]Commenti
Il blocco tiene una
$sumprogressiva in una variabile fuori dal map. Ogni chiamata somma l’elemento corrente e restituisce il nuovo totale, quindi la lista mappata è la sequenza delle somme parziali.Raku ce l’ha incorporato. La riduzione triangolare
[\+]conserva ogni somma parziale, quindi l’intera soluzione è un’unica espressione:my @numbers = 2, 4, 6, 8; say [\+] @numbers; # (2 6 12 20)
Restituisce una
Seq, quindi il suo gist usa le parentesi tonde —(2 6 12 20)— invece del[2 6 12 20]dell’array, ma i numeri sono gli stessi.