El año solar es de 365 días, 5 horas, 48 minutos, 45 segundos y 138 milisegundos, según este video . Con el calendario gregoriano actual, las reglas para los años bisiestos son las siguientes:
if year is divisible by 400, LEAP YEAR
else if year is divisible by 100, COMMON YEAR
else if year is divisible by 4, LEAP YEAR
else, COMMON YEAR
Desafortunadamente, este método se desactiva un día cada 3216 años.
Un posible método para reformar el calendario es la siguiente regla:
if year is divisible by 128, COMMON YEAR
else if year is divisible by 4, LEAP YEAR
else, COMMON YEAR
Esto tiene el beneficio de no requerir que cambiemos nuestros calendarios nuevamente por otros 625,000 años, más o menos.
Digamos que el mundo entero decide que, a partir de ahora, usamos este sistema de cada cuarto año, es un año bisiesto, excepto cada 128 años, cambiando nuestros calendarios de la siguiente manera:
YEAR GREGORIAN 128-YEAR
2044 LEAP LEAP
2048 LEAP COMMON
2052 LEAP LEAP
...
2096 LEAP LEAP
2100 COMMON LEAP
2104 LEAP LEAP
...
2296 LEAP LEAP
2300 COMMON LEAP
2304 LEAP COMMON
2308 LEAP LEAP
¿Cómo afectaría esto a nuestros algoritmos del día de la semana?
El reto
- Dada una fecha del año 2000 al año 100000, encuentre el día de la semana en este nuevo calendario.
- Cualquier formato de entrada y salida está permitido siempre que especifique claramente qué formatos está utilizando.
- Este es el código de golf, así que trate de hacer que sus soluciones sean lo más golficas posible.
Casos de prueba
"28 February 2048" -> "Friday"
"March 1, 2048" -> "Sat"
(2100, 2, 29) -> 0 # 0-indexed with Sunday as 0
"2100-02-29" -> 7 # 1-indexed with Sunday as 7
"28 Feb. 2176" -> "Wednesday"
"1-Mar-2176" -> "Th"
"28/02/100000" -> "F" # DD/MM/YYYYYY
"Feb. 29, 100000" -> 6 # 1-indexed with Sunday as 7
"03/01/100000" -> 1 # MM/DD/YYYYYY and 1-indexed with Sunday as 1
Sugerencias y comentarios sobre el desafío son bienvenidos. ¡Buena suerte y buen golf!