Kurso de Raku / Aldono 🆕 / Labori kun datumoj / Listoj, tabeloj kaj haketmapoj / Exercises / Kunigu du inventarojn

Solvo: Kunigu du inventarojn

Jen ebla solvo de la tasko.

Kodo

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(', ');

🦋 Vi povas trovi la fontkodon en la dosiero merge-inventories.raku.

Eligo

apples: 7, pears: 2, plums: 5

Komentoj

  1. Bukli tra ambaŭ haketmapoj kaj fari %total{$_} += ... aldonas ĉiun kvanton al la kuranta sumo, ĉu la ŝlosilo estis vidita antaŭe aŭ ne — mankanta ŝlosilo komencas ĉe nulo.

  2. %total.sort ordigas la parojn laŭ ŝlosilo, kaj la .map formatas ĉiun kiel ŝlosilo: valoro antaŭ ol ili estas kunigitaj.

Kursa navigado

Kunigu du inventarojn   |   Kreskantaj sumoj