Track
/
Elixir
Elixir
/
Esercizi
/
Conteggio degli uccelli
Conteggio degli uccelli

Conteggio degli uccelli

Esercizio di apprendimento

Introduzione

Ricorsione

Le funzioni ricorsive sono funzioni che chiamano se stesse.

Una funzione ricorsiva deve avere almeno un caso base e almeno un caso ricorsivo.

Un caso base restituisce un valore senza chiamare di nuovo la funzione. Un caso ricorsivo chiama di nuovo la funzione, modificando l'input in modo che a un certo punto corrisponda al caso base.

Molto spesso, ogni caso è scritto in una propria clausola della funzione.

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

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

Istruzioni

Sei un appassionato osservatore di uccelli che tiene traccia di quanti uccelli hanno visitato il tuo giardino in un giorno qualsiasi.

Hai deciso di portare l'osservazione degli uccelli a un nuovo livello e di implementare alcuni strumenti che ti aiuteranno a tenere traccia dei dati e a elaborarli.

Hai scelto di memorizzare i dati come un array di numeri interi. Il primo numero dell'array è il numero di uccelli che hanno visitato il tuo giardino oggi, il secondo quello di ieri, e così via.

1. Controlla quanti uccelli hanno visitato oggi

Implementa la funzione BirdCount.today/1. Dovrebbe ricevere un array di conteggi giornalieri di uccelli e restituire il conteggio di oggi. Se l'array è vuoto, dovrebbe restituire nil.

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

2. Incrementa il conteggio di oggi

Implementa la funzione BirdCount.increment_day_count/1. Dovrebbe ricevere un array di conteggi giornalieri di uccelli e incrementare il conteggio di oggi di 1. Se l'array è vuoto, restituisci [1].

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

3. Controlla se c'è stato un giorno senza uccelli in visita

Implementa la funzione BirdCount.has_day_without_birds?/1. Dovrebbe ricevere un array di conteggi giornalieri di uccelli. Dovrebbe restituire true se c'è stato almeno un giorno in cui nessun uccello ha visitato il giardino, e false altrimenti.

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

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

4. Calcola il numero totale di uccelli in visita

Implementa la funzione BirdCount.total/1. Dovrebbe ricevere un array di conteggi giornalieri di uccelli e restituire il numero totale di uccelli che hanno visitato il tuo giardino da quando hai iniziato a raccogliere i dati.

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

5. Calcola il numero di giorni intensi

Alcuni giorni sono più intensi di altri. Un giorno intenso è quello in cui cinque o più uccelli hanno visitato il tuo giardino.

Implementa la funzione BirdCount.busy_days/1. Dovrebbe ricevere un array di conteggi giornalieri di uccelli e restituire il numero di giorni intensi.

BirdCount.busy_days([4, 5, 0, 0, 6])
# => 2
Modifica tramite GitHub Il link si apre in una nuova finestra o scheda
Elixir Exercism

Vuoi iniziare Conteggio degli uccelli?

Iscriviti a Exercism per imparare e padroneggiare Elixir con 58 concetti168 esercizi e il mentoring di persone reali, tutto gratis.