Tracks
/
Elixir
Elixir
/
Ejercicios
/
Conteo de aves
Conteo de aves

Conteo de aves

Ejercicio de aprendizaje

Introducción

Recursión

Las funciones recursivas son funciones que se llaman a sí mismas.

Una función recursiva necesita tener al menos un caso base y al menos un caso recursivo.

Un caso base devuelve un valor sin volver a llamar a la función. Un caso recursivo vuelve a llamar a la función y modifica el argumento para que en algún momento coincida con el caso base.

Muy a menudo, cada caso se escribe en su propia cláusula de función.

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

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

Instrucciones

Eres una persona muy aficionada a observar aves y llevas la cuenta de cuántos pájaros han visitado tu jardín en un día cualquiera.

Decidiste llevar tu observación de aves a otro nivel e implementar algunas herramientas que te ayudarán a registrar y procesar los datos.

Elegiste guardar los datos como un array de números enteros. El primer número del array es la cantidad de pájaros que visitaron tu jardín hoy, el segundo, los de ayer, y así sucesivamente.

1. Verifica cuántos pájaros visitaron hoy

Implementa la función BirdCount.today/1. Debe recibir un array con los conteos diarios de pájaros y devolver el conteo de hoy. Si el array está vacío, debe devolver nil.

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

2. Incrementa el conteo de hoy

Implementa la función BirdCount.increment_day_count/1. Debe recibir un array con los conteos diarios de pájaros e incrementar en 1 el conteo de hoy. Si el array está vacío, devuelve [1].

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

3. Verifica si hubo un día sin pájaros visitantes

Implementa la función BirdCount.has_day_without_birds?/1. Debe recibir un array con los conteos diarios de pájaros. Debe devolver true si hubo al menos un día en el que ningún pájaro visitó el jardín, y false en caso contrario.

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

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

4. Calcula el número total de pájaros visitantes

Implementa la función BirdCount.total/1. Debe recibir un array con los conteos diarios de pájaros y devolver el total que ha visitado tu jardín desde que empezaste a recopilar los datos.

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

5. Calcula el número de días ajetreados

Algunos días son más ajetreados que otros. Un día ajetreado es aquel en el que cinco o más pájaros han visitado tu jardín.

Implementa la función BirdCount.busy_days/1. Debe recibir un array con los conteos diarios de pájaros y devolver el número de días ajetreados.

BirdCount.busy_days([4, 5, 0, 0, 6])
# => 2
Editar en GitHub El enlace se abre en una ventana o una pestaña nuevas
Elixir Exercism

¿Todo listo para empezar Conteo de aves?

Regístrate en Exercism para aprender y dominar Elixir con 58 conceptos168 ejercicios y mentoría humana real, todo gratis.