Курс языка программирования Raku / Функциональное, конкурентное, реактивное и веб-программирование / Конкурентное программирование / hyper и race 🆕 / Exercises / Сумма с race
Решение: Сумма с race
Вот один из возможных вариантов решения задачи.
Код
say (1..50).race.map(* ** 2).grep(* %% 2).sum;🦋 Исходный код можно найти в файле parallel-sum.raku.
Вывод
22100Комментарии
.raceвыполняет всю цепочку — возведение каждого числа в квадрат и отбор чётных квадратов — параллельно и, в отличие от.hyper, не обещает вернуть элементы по порядку.Здесь это не страшно, потому что последний шаг — суммирование, которое от порядка не зависит: чётные квадраты (
2²,4², …,50²) в сумме дают22100, в каком бы порядке они ни пришли. Когда вы лишь объединяете результаты (сумма, количество),.race— естественный выбор, и издержек у него может быть чуть меньше, чем у.hyper.
Навигация по курсу
← Сумма с race | hyper с фильтром →