Tracks
/
Roc
Roc
/
Übungen
/
Parallele Buchstabenhäufigkeit
Parallele Buchstabenhäufigkeit

Parallele Buchstabenhäufigkeit

Mittel

Anleitung

Zähle die Häufigkeit der Buchstaben in Texten mithilfe paralleler Berechnung.

Bei Parallelität geht es darum, Dinge parallel zu erledigen, die man auch nacheinander erledigen kann. Ein häufiges Beispiel ist das Zählen der Buchstabenhäufigkeit. Nutze die Parallelität, um die Gesamthäufigkeit jedes Buchstabens in einer Liste von Texten zu berechnen.

Buchstaben parallel zählen

Zähle die Buchstaben, ignoriere dabei Groß- und Kleinschreibung sowie alle Zeichen, die keine Buchstaben sind, und gib ein Wörterbuch zurück, das jedem Kleinbuchstaben seine Anzahl zuordnet. Behandle Buchstaben als Unicode-Skalarwerte; eine Unicode-Normalisierung ist nicht nötig.

Verwende pf.Parallel.map!(items, { workers, task }) aus der roc-parallel-Plattform, um die gegebenen items mit einer reinen task-Funktion zu verarbeiten, und zwar parallel über mehrere Threads (angegeben durch workers). Sobald alle Elemente verarbeitet sind, werden die Ergebnisse in der Reihenfolge der Eingabe zurückgegeben. Du musst nur ParallelLetterFrequency.roc bearbeiten.

Tests ausführen

Anders als die meisten anderen Übungen verwendet diese Übung Funktionen mit Seiteneffekten. Führe die Tests mit roc --opt=speed parallel-letter-frequency-test.roc aus, nicht mit roc test. Jeden Fehler, den der Roc-Code zurückgibt, meldet die Plattform in einem anderen Format als sonst.

Vielleicht möchtest du dir auch die Übung bank-account ansehen, die eine andere Seite der Nebenläufigkeit beleuchtet: Updates sicher auf einen gemeinsam genutzten Zustand anzuwenden.

Über GitHub bearbeiten Der Link öffnet sich in einem neuen Fenster oder Tab
Roc Exercism

Bereit, mit Parallele Buchstabenhäufigkeit zu starten?

Melde dich bei Exercism an, um Roc mit 139 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.

Tauche tiefer in Parallele Buchstabenhäufigkeit ein!

Wir schauen uns die Unterschiede zwischen Nebenläufigkeit und Parallelität an und betrachten verschiedene Ansätze, die Sprachen wie JavaScript, Go, Elixir und Rust wählen.