Rutas
/
Elixir
Elixir
/
Ejercicios
/
Recuento de aves
Recuento de aves

Recuento 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 la entrada 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 un gran aficionado a la observación de aves que lleva un registro de cuántos pájaros han visitado tu jardín en un día cualquiera.

Has decidido llevar tu afición por la observación de aves al siguiente nivel e implementar algunas herramientas que te ayudarán a hacer un seguimiento de los datos y procesarlos.

Has elegido almacenar los datos como un array de números enteros. El primer número del array es el número de pájaros que han visitado tu jardín hoy, el segundo ayer, y así sucesivamente.

1. Comprueba cuántos pájaros han visitado hoy

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

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

2. Incrementa el recuento de hoy

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

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

3. Comprueba si hubo un día sin visitas de pájaros

Implementa la función BirdCount.has_day_without_birds?/1. Debe recibir un array de recuentos 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 de recuentos diarios de pájaros y devolver el número total de pájaros que han 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 hay más movimiento 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 de recuentos 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 pestaña nueva
Elixir Exercism

¿Listo para empezar Recuento de aves?

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