Курс по Raku / Функционално, паралелно, реактивно и уеб програмиране / Паралелно програмиране / hyper и race 🆕 / Exercises / Сума с 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 с филтър