Implementiere grundlegende Listenoperationen.
In funktionalen Sprachen sind Listenoperationen wie length, map und reduce sehr verbreitet. Implementiere eine Reihe grundlegender Listenoperationen, ohne vorhandene Funktionen zu verwenden.
Die genaue Anzahl und die Namen der Operationen, die du implementieren sollst, hängen vom jeweiligen Track ab, damit es keine Konflikte mit vorhandenen Namen gibt. Die allgemeinen Operationen, die du implementierst, sind:
append (füge bei zwei gegebenen Listen alle Elemente der zweiten Liste ans Ende der ersten Liste an);concatenate (kombiniere bei einer Reihe von Listen alle Elemente aller Listen zu einer einzigen flachen Liste);filter (gib bei einem Prädikat und einer Liste die Liste aller Elemente zurück, für die predicate(item) True ist);length (gib bei einer Liste die Gesamtzahl der darin enthaltenen Elemente zurück);map (gib bei einer Funktion und einer Liste die Liste der Ergebnisse zurück, die du erhältst, wenn du function(item) auf alle Elemente anwendest);foldl (wenn du eine Funktion, eine Liste und einen Anfangswert für den Akkumulator hast, falte (reduziere) jedes Element von links in den Akkumulator);foldr (wenn du eine Funktion, eine Liste und einen Anfangswert für den Akkumulator hast, falte (reduziere) jedes Element von rechts in den Akkumulator);reverse (gib bei einer Liste eine Liste mit allen ursprünglichen Elementen zurück, aber in umgekehrter Reihenfolge).Beachte, dass die Reihenfolge, in der die Argumente an die fold-Funktionen (foldl, foldr) übergeben werden, wichtig ist.
Die obige Beschreibung dieser Übung ist für alle Exercism-Tracks gleich.
Um mit der Standardbibliothek von Elixir übereinzustimmen, sollten die von foldl und foldr verwendeten Funktionen das Element als erstes Argument und den Akkumulator als zweites annehmen.
Außerdem wird die Funktion, die die Länge zählt, count genannt, um nicht mit der automatisch importierten Funktion Kernel.length/1 in Konflikt zu geraten.
Ein oder mehrere Tests dieser Übung sind mit :slow markiert, weil sie unter Umständen sehr lange brauchen. Deshalb werden sie auf der Plattform nicht vom automatischen Test-Runner ausgeführt. Wenn du diese Übung direkt auf der Plattform im Web-Editor löst, solltest du sie dir vielleicht lieber auf deinen Rechner herunterladen. So kannst du alle Tests ausführen und die Effizienz deiner Lösung überprüfen.
Melde dich bei Exercism an, um Elixir mit 58 Konzepte168 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.
Genieße eine praktische Einführung in die Rekursion, erkunde die imperativen und funktionalen Alternativen zu Listenoperationen und tauche tief in Endrekursion und Akkumulatorfunktionen ein.