Raku-Kurs / Anhang 🆕 / Arbeiten mit Daten / Listen, Arrays und Hashes / Exercises / Laufende Summen
Lösung: Laufende Summen
Hier ist eine mögliche Lösung der Aufgabe.
Code
my @numbers = 2, 4, 6, 8;
my $sum = 0;
my @totals = @numbers.map({ $sum += $_ });
say @totals;🦋 Du findest den Quellcode in der Datei running-totals.raku.
Ausgabe
[2 6 12 20]Kommentare
Der Block hält eine laufende
$sumin einer Variablen außerhalb des Maps. Jeder Aufruf addiert das aktuelle Element und liefert die neue Summe, die abgebildete Liste ist also die Folge der Teilsummen.Raku hat das eingebaut. Die dreieckige Reduktion
[\+]behält jede Teilsumme, die ganze Lösung ist also ein einziger Ausdruck:my @numbers = 2, 4, 6, 8; say [\+] @numbers; # (2 6 12 20)
Sie liefert eine
Seq, ihr Gist verwendet also runde Klammern —(2 6 12 20)— statt des[2 6 12 20]des Arrays, doch die Zahlen sind dieselben.