En este post voy a resolver un ejercicio de JavaScript tomado originalmente de Codewars.
Un día desafortunado o sin suerte es un viernes que además es 13.
Nuestra tarea es escribir una función que reciba el número de un año y devuelva la cantidad de “días desafortunados” que tiene, es decir, el conteo de viernes 13 que existen en ese año.
Vamos a trabajar con fechas, porque esa es la forma más fácil según mi forma de ver las cosas.
Hacemos un ciclo y recorremos cada mes de ese año (las conversiones de días, años bisiestos y esas cosas las maneja JS) poniéndole el valor de 13 en la fecha; después llamamos a getDay
que devuelve el día de la semana y si es viernes aumentamos un contador.
Al terminar el ciclo, regresamos ese contador. Cabe mencionar que los meses en JavaScript comienzan en 0 por lo que 0 es enero y 11 es diciembre.
Para el día de la semana, 0 es domingo, 1 es lunes y así hasta que el sábado es 6. Por lo tanto, para saber si es viernes comprobamos si el día es 5.
El código es el siguiente:
const cantidadDeDiasDesafortunados = anio => {
let fecha = new Date(anio, 0),
contador = 0;
// Hacer un ciclo desde enero hasta diciembre
for (let monthNumber = 0; monthNumber < 12; monthNumber++) {
fecha.setMonth(monthNumber);
// Ir al día 13 de ese mes
fecha.setDate(13);
// Y comprobar si es viernes
if (fecha.getDay() === 5) contador++;
}
return contador;
}
Al inicio creamos una fecha con el año que nos pasaron, en el mes de enero. Cambiamos de mes y en cada mes comprobamos si el día 13 es viernes.
A continuación dejo el código completo para probar la función:
const cantidadDeDiasDesafortunados = anio => {
let fecha = new Date(anio, 0),
contador = 0;
// Hacer un ciclo desde enero hasta diciembre
for (let monthNumber = 0; monthNumber < 12; monthNumber++) {
fecha.setMonth(monthNumber);
// Ir al día 13 de ese mes
fecha.setDate(13);
// Y comprobar si es viernes
if (fecha.getDay() === 5) contador++;
}
return contador;
}
console.log("Probando con ", 1586, "Debería ser: 1. ¿Correcto?: ", cantidadDeDiasDesafortunados(1586) === 1);
console.log("Probando con ", 1001, "Debería ser: 3. ¿Correcto?: ", cantidadDeDiasDesafortunados(1001) === 3);
console.log("Probando con ", 2819, "Debería ser: 2. ¿Correcto?: ", cantidadDeDiasDesafortunados(2819) === 2);
console.log("Probando con ", 2792, "Debería ser: 2. ¿Correcto?: ", cantidadDeDiasDesafortunados(2792) === 2);
console.log("Probando con ", 2723, "Debería ser: 2. ¿Correcto?: ", cantidadDeDiasDesafortunados(2723) === 2);
console.log("Probando con ", 1909, "Debería ser: 1. ¿Correcto?: ", cantidadDeDiasDesafortunados(1909) === 1);
console.log("Probando con ", 1812, "Debería ser: 2. ¿Correcto?: ", cantidadDeDiasDesafortunados(1812) === 2);
console.log("Probando con ", 1618, "Debería ser: 2. ¿Correcto?: ", cantidadDeDiasDesafortunados(1618) === 2);
console.log("Probando con ", 2132, "Debería ser: 1. ¿Correcto?: ", cantidadDeDiasDesafortunados(2132) === 1);
console.log("Probando con ", 2065, "Debería ser: 3. ¿Correcto?: ", cantidadDeDiasDesafortunados(2065) === 3);
El día de hoy te mostraré cómo crear un servidor HTTP (servidor web) en Android…
En este post te voy a enseñar a designar una carpeta para imprimir todos los…
En este artículo te voy a enseñar la guía para imprimir en una impresora térmica…
Hoy te voy a mostrar un ejemplo de programación para agregar un módulo de tasa…
Los usuarios del plugin para impresoras térmicas pueden contratar licencias, y en ocasiones me han…
Hoy voy a enseñarte cómo imprimir el € en una impresora térmica. Vamos a ver…
Esta web usa cookies.