Курс по 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 с филтър →