Rutas
/
Go
Go
/
Ejercicios
/
Observador de pájaros
Observador de pájaros

Observador de pájaros

Ejercicio de aprendizaje

Introducción

Sintaxis general

El bucle for es una de las instrucciones más habituales para ejecutar repetidamente una misma lógica. En Go consta de la palabra clave for, una cabecera y un bloque de código que contiene el cuerpo del bucle entre llaves. La cabecera consta de tres componentes separados por puntos y coma ;: inicialización, condición y post.

for init; condition; post {
  // loop body - code that is executed repeatedly as long as the condition is true
}
  • El componente de inicialización es el código que se ejecuta una sola vez antes de que empiece el bucle.
  • El componente de condición debe ser una expresión que se evalúe como un valor booleano y que controle cuándo debe detenerse el bucle. El código que hay dentro del bucle se ejecutará mientras esta condición se evalúe como true. En cuanto esta expresión se evalúe como false, no se ejecutará ninguna iteración más del bucle.
  • El componente post es el código que se ejecuta al final de cada iteración.

Nota: A diferencia de otros lenguajes, no hay paréntesis () que rodeen los tres componentes de la cabecera. De hecho, incluir esos paréntesis provoca un error de compilación. Sin embargo, las llaves { } que rodean el cuerpo del bucle siempre son obligatorias.

Bucles for: un ejemplo

El componente de inicialización normalmente prepara una variable contador, la condición comprueba si el bucle debe continuar o detenerse y el componente post normalmente incrementa el contador al final de cada repetición.

for i := 1; i < 10; i++ {
  fmt.Println(i)
}

Este bucle imprimirá los números del 1 al 9 (incluido el 9). Definir el paso suele hacerse con una instrucción de incremento o decremento, como se muestra en el ejemplo anterior.

Instrucciones

Eres un entusiasta observador de pájaros que lleva la cuenta de cuántos pájaros han visitado tu jardín. Normalmente usas una tabla de recuento en un cuaderno para contar los pájaros, pero para trabajar mejor con tus datos, has digitalizado los recuentos de pájaros de las últimas semanas.

1. Determina el número total de pájaros que has contado hasta ahora

Empecemos analizando los datos para obtener una visión general. Averigua cuántos pájaros has contado en total desde que empezaste tus registros.

Implementa una función TotalBirdCount que acepta un slice de int que contiene el recuento de pájaros por día. Debería devolver el número total de pájaros que has contado.

birdsPerDay := []int{2, 5, 0, 7, 4, 1, 3, 0, 2, 5, 0, 1, 3, 1}
TotalBirdCount(birdsPerDay)
// => 34

2. Calcula el número de pájaros visitantes en una semana concreta

Ahora que tienes una idea general de tus cifras de recuento de pájaros, quieres hacer un análisis más detallado.

Implementa una función BirdsInWeek que acepta un slice de recuentos de pájaros por día y un número de semana.

Devuelve el número total de pájaros que contaste en esa semana concreta. Puedes suponer que las semanas siempre se registran completas.

birdsPerDay := []int{2, 5, 0, 7, 4, 1, 3, 0, 2, 5, 0, 1, 3, 1}
BirdsInWeek(birdsPerDay, 2)
// => 12

3. Corrige un error de recuento

Te diste cuenta de que, durante todo el tiempo que estuviste intentando llevar la cuenta de los pájaros, había un pájaro que se escondía en un rincón lejano del jardín.

Descubriste que este pájaro siempre pasaba un día sí y otro no en tu jardín.

No sabes exactamente dónde estaba entre esos días, pero desde luego no en tu jardín.

Tu intuición de observador de pájaros también te dice que el pájaro estaba en tu jardín el primer día que registraste en tu lista.

Con esta nueva información, escribe una función FixBirdCountLog que recibe un slice de pájaros contados por día como argumento y devuelve el slice después de corregir el error de recuento.

birdsPerDay := []int{2, 5, 0, 7, 4, 1}
FixBirdCountLog(birdsPerDay)
// => [3 5 1 7 5 1]
Editar en GitHub El enlace se abre en una ventana o pestaña nueva
Go Exercism

¿Listo para empezar Observador de pájaros?

Regístrate en Exercism para aprender y dominar Go con 34 conceptos166 ejercicios y mentoría humana real, todo gratis.