Parcours
/
Elixir
Elixir
/
Exercices
/
Comptage d'oiseaux
Comptage d'oiseaux

Comptage d'oiseaux

Exercice d'apprentissage

Introduction

Récursion

Les fonctions récursives sont des fonctions qui s'appellent elles-mêmes.

Une fonction récursive doit avoir au moins un cas de base et au moins un cas récursif.

Un cas de base renvoie une valeur sans rappeler la fonction. Un cas récursif rappelle la fonction, en modifiant l'entrée pour qu'elle finisse par correspondre au cas de base.

Très souvent, chaque cas est écrit dans sa propre clause de fonction.

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

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

Instructions

Tu es un observateur d'oiseaux passionné et tu notes combien d'oiseaux ont visité ton jardin chaque jour.

Tu as décidé de faire passer ton observation des oiseaux au niveau supérieur et d'implémenter quelques outils pour t'aider à suivre et à traiter ces données.

Tu as choisi de stocker ces données dans un tableau d'entiers. Le premier nombre du tableau correspond au nombre d'oiseaux qui ont visité ton jardin aujourd'hui, le deuxième à hier, et ainsi de suite.

1. Vérifie combien d'oiseaux sont venus aujourd'hui

Implémente la fonction BirdCount.today/1. Elle prend un tableau de comptages journaliers et renvoie le comptage d'aujourd'hui. Si le tableau est vide, elle renvoie nil.

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

2. Incrémente le comptage du jour

Implémente la fonction BirdCount.increment_day_count/1. Elle prend un tableau de comptages journaliers et incrémente de 1 le comptage du jour. Si le tableau est vide, elle renvoie [1].

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

3. Vérifie s'il y a eu un jour sans aucun oiseau

Implémente la fonction BirdCount.has_day_without_birds?/1. Elle prend un tableau de comptages journaliers. Elle renvoie true s'il y a eu au moins un jour où aucun oiseau n'a visité le jardin, et false sinon.

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

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

4. Calcule le nombre total d'oiseaux

Implémente la fonction BirdCount.total/1. Elle prend un tableau de comptages journaliers et renvoie le nombre total d'oiseaux qui ont visité ton jardin depuis que tu as commencé à collecter ces données.

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

5. Calcule le nombre de jours chargés

Certains jours sont plus chargés que d'autres. Un jour chargé est un jour où cinq oiseaux ou plus ont visité ton jardin.

Implémente la fonction BirdCount.busy_days/1. Elle prend un tableau de comptages journaliers et renvoie le nombre de jours chargés.

BirdCount.busy_days([4, 5, 0, 0, 6])
# => 2
Modifie via GitHub Le lien s'ouvre dans une nouvelle fenêtre ou un nouvel onglet
Elixir Exercism

Prêt à commencer Comptage d'oiseaux ?

Inscris-toi sur Exercism pour apprendre et maîtriser Elixir avec 58 concepts168 exercices, et un vrai mentorat humain, le tout gratuitement.