Sobald du die Übung hello-world implementiert hast, ist die nächste Aufgabe, 20+ weitere Übungen zu implementieren.
Es gibt zwei Arten von Übungen, die du implementieren kannst:
Im Allgemeinen empfehlen wir neuen Tracks, mit der Implementierung von Praxisübungen zu beginnen, da sie einfacher zu implementieren sind und weniger Vorüberlegungen erfordern. Konzeptübungen kannst du später jederzeit hinzufügen, sobald dein Track richtig läuft.
Um Tracks bei der Implementierung von Praxisübungen zu helfen, haben wir das exercism/problem-specifications-Repository erstellt. Dieses Repository enthält Metadaten für über 100+ Praxisübungen, aus denen verschiedene Tracks dann ihre trackspezifische Version dieser Übungen implementieren können. Aus diesem Grund wirst du dieselben Übungen in vielen verschiedenen Tracks implementiert sehen.
Wie wählst du also die 20+ aus dieser Liste von 100+ Übungen aus? Hier sind einige Richtlinien.
In den 100+ Übungen steckt eine große Vielfalt an Konzepten. Du solltest Übungen implementieren, bei denen Lernende eine große Vielfalt an Konzepten üben. Statt also 20 Übungen zu implementieren, die sich auf Strings konzentrieren, versuche Übungen zu implementieren, die verschiedene Konzepte abdecken.
Hier sind einige Konzepte mit Beispielübungen:
| Konzepte | Übungen |
|---|---|
| Bitmanipulation | allergies, secret-handshake |
| Boolesche Werte | leap |
| Klassen | circular-buffer, robot-name |
| Nebenläufigkeit | bank-account |
| Bedingte Anweisungen | raindrops |
| Datum und Uhrzeit | gigasecond, meetup |
| Gleichheit | clock |
| Gleitkommazahlen | darts, space-age |
| Faule Auswertung | alphametics, zebra-puzzle |
| Listen | resistor-color, spiral-matrix |
| Schleifen | collatz-conjecture, protein-translation |
| Maps | nucleotide-count |
| Zahlen | leap, grains |
| Zufall | dnd-character, robot-name |
| Strings | bob, isogram, |
| Bäume | binary-search-tree, pov |
Einige Übungen sind schwieriger zu implementieren als andere. Du solltest Übungen mit unterschiedlichem Schwierigkeitsgrad implementieren: einige einfache, einige mittelschwere und einige schwere.
Wie schwierig eine Übung ist, hängt von mehreren Faktoren ab, etwa den beteiligten Konzepten und der Sprache des Tracks. Es kann helfen, dir anzusehen, wie die Übung in anderen Tracks aussieht, die sie bereits implementiert haben, um ein besseres Gefühl dafür zu bekommen, wie die Implementierung aussehen könnte.
Hier sind einige Schwierigkeitsgrade mit Übungen:
| Schwierigkeit | Übungen |
|---|---|
| Einfach | darts, gigasecond, isogram, leap, resistor-color, space-age |
| Mittel | allergies, bob, meetup, protein-translation, raindrops, secret-handshake |
| Schwer | alphametics, forth, react, pov, zebra-puzzle, zipper |
Nicht alle Übungen passen zu deinem Track. Du solltest nur die Übungen auswählen, die zu deinem Track passen; besser eine Übung nicht implementieren, als eine zu implementieren, die keinen Sinn ergibt. Ein Beispiel: Bei der Übung lens-person arbeitet der Lernende mit Linsen, die viele Sprachen nicht unterstützen.
Wenn du eine Übung findest, die nicht zu deinem Track passt, kannst du ihren Slug zum exercises.foregone-Array in der config.json-Datei des Tracks hinzufügen.
So wird dafür gesorgt, dass die Tools diese Übung ignorieren.
Um das Ganze etwas konkreter zu machen: So könnte eine Beispielauswahl der ersten Übungen aussehen:
| Übung | Schwierigkeit | Konzepte |
|---|---|---|
| hello-world | Einfach | Keine (erste Übung) |
| leap | Einfach | Zahlen, Boolesche Werte |
| gigasecond | Einfach | Datum und Uhrzeit |
| isogram | Einfach | Strings |
| resistor-color | Einfach | Listen |
| nucleotide-count | Einfach | Maps |
| collatz-conjecture | Einfach | Schleifen |
| darts | Einfach | Gleitkommazahlen |
| two-fer | Einfach | String-Formatierung, Optionale Argumente |
| high-scores | Einfach | Verarbeitung von Sammlungen |
| raindrops | Mittel | Bedingte Anweisungen |
| bob | Mittel | Strings |
| allergies | Mittel | Bitmanipulation |
| series | Mittel | Ausnahmen |
| circular-buffer | Mittel | Klassen |
| meetup | Mittel | Datum und Uhrzeit |
| yacht | Mittel | Listen |
| dominoes | Schwer | Tupel, Faule Auswertung |
| diamond | Schwer | String-Formatierung |
| alphametics | Schwer | Faule Auswertung |
| forth | Schwer | Parsen |
Nachdem du die Übungen ausgewählt hast, die du in deinen Track aufnehmen möchtest, ist der nächste Schritt, sie zu implementieren. Die Dokumentation zum Hinzufügen einer Praxisübung enthält detaillierte Anweisungen, wie du eine Praxisübung hinzufügst.