Курс Raku / Додаток 🆕 / Робота з даними / Списки, масиви та хеші / Вправи / Об’єднайте два склади
Розв’язання: Об’єднайте два склади
Ось одне з можливих розв’язань задачі.
Код
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(', ');🦋 Знайдіть програму у файлі merge-inventories.raku.
Вивід
apples: 7, pears: 2, plums: 5Коментарі
Обхід обох хешів із
%total{$_} += ...додає кожну кількість до поточної суми незалежно від того, чи ключ уже траплявся: відсутній ключ починається з нуля.%total.sortупорядковує пари за ключем, а.mapформатує кожну якключ: значенняперед тим, як їх з’єднають.