Курс по Raku / Приложение 🆕 / Работа с данни / Списъци, масиви и хешове / Exercises / Нарастващи суми
Решение: Нарастващи суми
Ето едно възможно решение на задачата.
Код
my @numbers = 2, 4, 6, 8;
my $sum = 0;
my @totals = @numbers.map({ $sum += $_ });
say @totals;🦋 Намерете програмата във файла running-totals.raku.
Изход
[2 6 12 20]Коментари
Блокът държи текуща
$sumв променлива извънmap. Всяко извикване добавя текущия елемент и връща новата сума, така че отобразеният списък е поредицата от частични суми.В Raku това е вградено. Триъгълното свиване
[\+]пази всяка частична сума, така че цялото решение е един израз:my @numbers = 2, 4, 6, 8; say [\+] @numbers; # (2 6 12 20)
То връща
Seq, така че общият му вид използва кръгли скоби —(2 6 12 20), — а не масивните[2 6 12 20], но числата са същите.