Cursus Raku / Addendum 🆕 / Werken met gegevens / Lijsten, arrays en hashes / Exercises / Voeg twee voorraden samen

Oplossing: Voeg twee voorraden samen

Hier is een mogelijke oplossing voor de taak.

Code

my %shop-a = apples => 3, pears => 2;
my %shop-b = apples => 4, plums => 5;

my %total;
for %shop-a, %shop-b -> %shop {
    %total{$_} += %shop{$_} for %shop.keys;
}

say %total.sort.map({ "{.key}: {.value}" }).join(', ');

🦋 Je kunt de broncode vinden in het bestand merge-inventories.raku.

Uitvoer

apples: 7, pears: 2, plums: 5

Opmerkingen

  1. Over beide hashes lussen en %total{$_} += ... doen telt elke hoeveelheid bij het lopende totaal op, of de sleutel nu eerder gezien is of niet — een ontbrekende sleutel begint op nul.

  2. %total.sort zet de paren op sleutel op volgorde, en de .map formatteert elk als sleutel: waarde voordat ze samengevoegd worden.

Cursusnavigatie

Voeg twee voorraden samen   |   Lopende totalen