Skip to main content

Command Palette

Search for a command to run...

Saber si un año es bisiesto o no

Published
3 min read
Saber si un año es bisiesto o no
G

I'm a software engineer with experience in web development. The main technologies I work with are .NET, React, and SQL. Personally, I prefer the backend.

I'm keen on writing my dev journey. I think this is a great way to share and appropriate what I've learned.

En este artículo, exploraremos, diseñaremos y codificaremos un algoritmo en Python para determinar si un año es bisiesto o no.

Problema

Saber si un año dado es bisiesto o no.

Ejemplo 1
Entrada: 1000
Salida: false
Ejemplo 2
Entrada: 2000
Salida: true

Consejo: Antes de escribir código debes saber cómo se resuelve el problema. Piensa en cómo lo resuelves sin código. Haz el algoritmo paso a paso en un papel o en el editor de código. Luego compara tu solución con la del artículo.

1. Análisis

El problema nos da un año y debemos definir si es una año bisiesto o no. La salida es true o false.

Un año es el tiempo que tarda la tierra en dar una vuelta al sol. Un año bisiesto es un año que tiene 366 días y no 365.

¿Cómo determinar si un año es bisiesto o no? Para entender mejor este tema, investiguemos qué nos dice Copilot de Microsoft Bing. Copilot nos dice que según el calendario gregoriano un año es bisiesto si cumple estas tres reglas:

  1. Ser divisible por 4

  2. No ser divisible por 100

  3. Pero si es divisible por 100, debe ser divisible por 400.

2. Diseño del algoritmo

1. Idea de solución

La fórmula compacta que nos da Copilot es:

bisiesto = (año mod 4 = 0) Y (año mod 100 ≠ 0 O año mod 400 = 0)

Si el año es divisible entre 4 y no divisible entre 100, entonces es bisiesto. Pero ¿qué pasa con los años que son divisibles entre 100? Todavía pueden ser bisiestos si son divisibles entre 400.

año mod 4 = 0

si año es divisible entre 4

(año mod 100 ≠ 0 O año mod 400 = 0)

El operador lógico O maneja dos condiciones.

  • Si no es divisible entre 100

  • Si es divisible entre 400

Basta con que una sea verdadera para que la expresión sea verdadera.

El operador lógico Y une las dos partes de la fórmula. Ambas tienen que ser verdaderas para que la expresión sea verdadera.

2. Diseño

Un primer acercamiento, siguiendo las reglas de los años bisiesto, sería:

bisiesto = false
si año es divisible por 4 entonces
    si año no es divisible por 100 entonces 
        bisiesto = true
    sino // si el año es divisible por 100
        si año es divisble por 400 entonces 
            bisiesto = true
fin si
imprimir(bisiesto)

Este pseudocódigo es entendible por sí solo, pero es verboso. La fórmula compacta nos dice lo mismo.

3. Comprobación en seco

yearresult
1000true Y (false O false) = true Y false = false
2000true Y (false O true) = true Y true = true
1600true Y (false O true) = true Y true = true
1900true Y (false O false) = true Y false = false
2024true Y (true O false) = true Y true = true
2005false...

3. Codificación

Codificamos aquí solo la fórmula compacta. Pasa a código el pseudocódigo que presentamos arriba y pruébalo.

year = int(input("Ingresa el año: "))
bisiesto = (year % 4 == 0) and (year % 100 != 0 or year % 400 == 0)
print(bisiesto)

4. Complejidad

Tiempo: O(1) constante

Porque no recorremos una colección.

Espacio: O(1) constante

Porque no usamos estructura de datos extra.

Conclusión

En conclusión, determinar si un año es bisiesto es una tarea sencilla cuando se conocen las reglas del calendario gregoriano. Presentamos dos algoritmos, uno más descriptivo en pseudocódigo; el otro, más compacto tipo fórmula. Además, explicamos cómo funciona una condición compuesta con los operadores lógicos and y or.

Bibliografía

Joyanes Aguilar, L. (2008). Fundamentos de programación. Madrid: McGraw-Hill.

More from this blog

G

Gilberto Ramírez

13 posts

Soy un ingeniero de software con experiencia desarrollando aplicaciones web. Mi pila tecnológica es .NET, React, SQL. Me gusta escribir y compartir lo aprendido.