Tracks
/
Elixir
Elixir
/
Übungen
/
Vogelzählung
Vogelzählung

Vogelzählung

Lernübung

Einführung

Rekursion

Rekursive Funktionen sind Funktionen, die sich selbst aufrufen.

Eine rekursive Funktion braucht mindestens einen Basisfall und mindestens einen rekursiven Fall.

Ein Basisfall gibt einen Wert zurück, ohne die Funktion erneut aufzurufen. Ein rekursiver Fall ruft die Funktion erneut auf und verändert dabei den Eingabewert so, dass er irgendwann dem Basisfall entspricht.

Sehr oft wird jeder Fall in eine eigene Funktionsklausel geschrieben.

# base case
def count([]), do: 0

# recursive case
def count([_head | tail]), do: 1 + count(tail)

Anleitung

Du bist ein begeisterter Vogelbeobachter und hältst fest, wie viele Vögel an einem beliebigen Tag deinen Garten besucht haben.

Du hast beschlossen, deine Vogelbeobachtung auf ein neues Niveau zu heben und ein paar Werkzeuge zu entwickeln, mit denen du die Daten erfassen und verarbeiten kannst.

Du hast dich entschieden, die Daten als Liste von Ganzzahlen zu speichern. Die erste Zahl in der Liste ist die Anzahl der Vögel, die heute deinen Garten besucht haben, die zweite gestern, und so weiter.

1. Prüfe, wie viele Vögel heute zu Besuch waren

Implementiere die Funktion BirdCount.today/1. Sie soll eine Liste der täglichen Vogelzahlen entgegennehmen und die heutige Anzahl zurückgeben. Wenn die Liste leer ist, soll sie nil zurückgeben.

BirdCount.today([2, 5, 1])
# => 2

2. Erhöhe die heutige Anzahl

Implementiere die Funktion BirdCount.increment_day_count/1. Sie soll eine Liste der täglichen Vogelzahlen entgegennehmen und die heutige Anzahl um 1 erhöhen. Wenn die Liste leer ist, soll sie [1] zurückgeben.

BirdCount.increment_day_count([4, 0, 2])
# => [5, 0, 2]

3. Prüfe, ob es einen Tag ohne Vögel gab

Implementiere die Funktion BirdCount.has_day_without_birds?/1. Sie soll eine Liste der täglichen Vogelzahlen entgegennehmen. Sie soll true zurückgeben, wenn es mindestens einen Tag gab, an dem keine Vögel den Garten besucht haben, andernfalls false.

BirdCount.has_day_without_birds?([2, 0, 4])
# => true

BirdCount.has_day_without_birds?([3, 8, 1, 5])
# => false

4. Berechne die Gesamtzahl der Vögel, die zu Besuch kamen

Implementiere die Funktion BirdCount.total/1. Sie soll eine Liste der täglichen Vogelzahlen entgegennehmen und die Gesamtzahl der Vögel zurückgeben, die deinen Garten besucht haben, seit du mit dem Sammeln der Daten begonnen hast.

BirdCount.total([4, 0, 9, 0, 5])
# => 18

5. Berechne die Anzahl der Tage mit viel Betrieb

An manchen Tagen ist mehr los als an anderen. Ein Tag mit viel Betrieb ist einer, an dem fünf oder mehr Vögel deinen Garten besucht haben.

Implementiere die Funktion BirdCount.busy_days/1. Sie soll eine Liste der täglichen Vogelzahlen entgegennehmen und die Anzahl der Tage mit viel Betrieb zurückgeben.

BirdCount.busy_days([4, 5, 0, 0, 6])
# => 2
Über GitHub bearbeiten Der Link öffnet sich in einem neuen Fenster oder Tab
Elixir Exercism

Bereit, mit Vogelzählung zu starten?

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