Курс языка программирования Raku / Приложение 🆕 / Работа с данными / Списки, массивы и хеши / Exercises / Объедините два склада
Решение: Объедините два склада
Вот один из возможных вариантов решения задачи.
Код
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форматирует каждую какключ: значениеперед их склейкой.