Raku-Kurs / Funktionale, nebenläufige, reaktive und Web-Programmierung / Nebenläufige Programmierung / hyper und race 🆕 / Exercises / Eine Summe mit race

Lösung: Eine Summe mit race

Hier ist eine mögliche Lösung der Aufgabe.

Code

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

🦋 Du findest den Quellcode in der Datei parallel-sum.raku.

Ausgabe

22100

Kommentare

  1. .race führt die ganze Kette — jede Zahl quadrieren und nach den geraden Quadraten filtern — parallel aus und verspricht, anders als .hyper, nicht, die Elemente in Reihenfolge zu liefern.

  2. Das ist hier unbedenklich, denn der letzte Schritt ist eine Summe, die von der Reihenfolge unabhängig ist: Die geraden Quadrate (, , …, 50²) summieren sich zu 22100, in welcher Reihenfolge sie auch eintreffen. Wenn Sie die Ergebnisse nur zusammenfassen (Summe, Anzahl), ist .race die natürliche Wahl und kann etwas weniger Aufwand mit sich bringen als .hyper.

Kursnavigation

Eine Summe mit race   |   hyper mit einem Filter