Kurso de Raku / Aldono 🆕 / Labori kun datumoj / Listoj, tabeloj kaj haketmapoj / Exercises / Kreskantaj sumoj
Solvo: Kreskantaj sumoj
Jen ebla solvo de la tasko.
Kodo
my @numbers = 2, 4, 6, 8;
my $sum = 0;
my @totals = @numbers.map({ $sum += $_ });
say @totals;🦋 Vi povas trovi la fontkodon en la dosiero running-totals.raku.
Eligo
[2 6 12 20]Komentoj
La bloko tenas kurantan
$sumen variablo ekster la map. Ĉiu voko aldonas la kurantan elementon kaj redonas la novan sumon, do la mapita listo estas la sinsekvo de partaj sumoj.Raku havas tion enkonstruita. La triangula redukto
[\+]konservas ĉiun partan sumon, do la tuta solvo estas unu sola esprimo:my @numbers = 2, 4, 6, 8; say [\+] @numbers; # (2 6 12 20)
Ĝi redonas
Seq, do ĝia resumo uzas rondajn krampojn —(2 6 12 20)— prefere ol la[2 6 12 20]de la tabelo, sed la nombroj estas la samaj.