Raku kurss / Pielikums 🆕 / Darbs ar datiem / Saraksti, masīvi un jaucējtabulas / Exercises / Augošās summas

Risinājums: Augošās summas

Šeit ir iespējams risinājums uzdevumam.

Kods

my @numbers = 2, 4, 6, 8;

my $sum = 0;
my @totals = @numbers.map({ $sum += $_ });

say @totals;

🦋 Atrodiet programmu failā running-totals.raku.

Izvade

[2 6 12 20]

Komentāri

  1. Bloks augošo summu $sum glabā mainīgajā ārpus map. Katrs izsaukums pieskaita pašreizējo elementu un atgriež jauno summu, tāpēc attēlotais saraksts ir daļsummu virkne.

  2. Raku tas ir iebūvēts. Trijstūrveida redukcija [\+] patur katru daļsummu, tāpēc viss risinājums ir viena izteiksme:

    my @numbers = 2, 4, 6, 8;
    say [\+] @numbers; # (2 6 12 20)

    Tā atgriež Seq, tāpēc tās attēlojumā ir apaļās iekavas — (2 6 12 20) —, nevis masīva [2 6 12 20], bet skaitļi ir tie paši.

Kursa navigācija

Augošās summas   |   Transponējiet matricu