Курс Raku / Функційне, конкурентне, реактивне та веб-програмування / Конкурентне програмування / hyper і race 🆕 / Вправи / Сума з race

Розв’язання: Сума з race

Ось одне з можливих розв’язань задачі.

Код

say (1..50).race.map(* ** 2).grep(* %% 2).sum;

🦋 Знайдіть програму у файлі parallel-sum.raku.

Вивід

22100

Коментарі

  1. .race виконує весь ланцюжок — піднесення кожного числа до квадрата та відбір парних квадратів — паралельно і, на відміну від .hyper, не обіцяє повернути елементи по порядку.

  2. Тут це нормально, бо останнім кроком є сума, незалежна від порядку: парні квадрати (, , …, 50²) додаються до 22100, у якому б порядку вони не прибули. Коли ви лише поєднуєте результати (сума, кількість), .race є природним вибором і може нести трохи менше накладних витрат, ніж .hyper.

Навігація курсом

Сума з race   |   hyper з фільтром