Año Bisiesto

Introducción

Leap Year o 'Año Bisiesto' es una kata clásica que suele intentarse como continuación de FizzBuzz, ya que se considera ligeramente más difícil debido a que sus reglas son un poco más complicadas. En la práctica, la mayoría de los desarrolladores pueden retener una solución completa de FizzBuzz en su memoria de trabajo, pero el algoritmo del Leap Year supone una mayor carga cognitiva, por lo que normalmente no es posible hacerlo en un único intento.

Aquí empieza a revelarse el poder del TDD en pequeños pasos. Un algoritmo que por sí mismo parece un reto puede dividirse en trozos sencillos. Además, como realizarás tests, dispondrás de documentación activa y de un conjunto completo de pruebas de regresión una vez que hayas terminado.

Elegir cuidadosamente el siguiente test es esencial: si en algún momento te encuentras dando un paso demasiado grande, pregúntate: ¿has elegido el caso de prueba correcto? Puede que tengas que retroceder más de un paso antes de encontrar una ruta más sencilla. Al igual que con otras katas, el éxito no sólo significa que el código "funciona": puedes repetirla una y otra vez para perfeccionar tu enfoque (ver la sección de 'Definir Terminado' más abajo).

Instrucciones

Implementa un método que compruebe si un año es bisiesto.

Deben cumplirse todas las siguientes normas:

  • Un año no es bisiesto si no es divisible por 4
  • Un año es bisiesto si es divisible por 4
  • Un año es bisiesto si es divisible por 400
  • Un año no es bisiesto si es divisible por 100 pero no por 400

Ejemplos:

  • 1997 no es bisiesto (no es divisible por 4)
  • 1996 es bisiesto (divisible por 4)
  • 1600 es bisiesto (divisible por 400)
  • 1800 no es bisiesto (divisible por 4, divisible por 100, NO divisible por 400)

El método debe devolver 'true' si un año es bisiesto, y 'false' si no lo es.

Crédito: Coding Dojo

Definir "Terminado"

¿Cómo se sabe cuándo has terminado un kata?

En primer lugar, no es una cuestión de una sola vez. Algunos desarrolladores practican la misma kata cientos de veces, cada vez probando una ruta distinta, o una técnica diferente.

Algo que es importante, pero que a veces se pasa por alto, es interiorizar el proceso de TDD. Intenta seguir siempre los principios de TDD mientras implementas la kata, aunque al comienzo no te parezca natural. Si te quedas bloqueado y te das cuenta de que necesitas romper uno de los principios para volver a empezar, no pasa nada, pero anótalo; es un área de mejora. La próxima vez que hagas la kata, con más experiencia, puede que te des cuenta de que se ha solucionado.

Soluciones

Vídeos