Curso de Raku / Apéndice 🆕 / Trabajar con datos / Listas, arrays y hashes / Exercises / Totales acumulados
Solución: Totales acumulados
Aquí tienes una posible solución para la tarea.
Código
my @numbers = 2, 4, 6, 8;
my $sum = 0;
my @totals = @numbers.map({ $sum += $_ });
say @totals;🦋 Puedes encontrar el código fuente en el archivo running-totals.raku.
Salida
[2 6 12 20]Comentarios
El bloque mantiene un
$sumacumulado en una variable fuera del map. Cada llamada suma el elemento actual y devuelve el total nuevo, así que la lista mapeada es la secuencia de sumas parciales.Raku trae esto de fábrica. La reducción triangular
[\+]conserva todas las sumas parciales, así que la solución entera es una sola expresión:my @numbers = 2, 4, 6, 8; say [\+] @numbers; # (2 6 12 20)
Devuelve una
Seq, así que su representación usa paréntesis —(2 6 12 20)— en lugar del[2 6 12 20]del array, pero los números son los mismos.