L'anno solare è di 365 giorni, 5 ore, 48 minuti, 45 secondi e 138 millisecondi, secondo questo video . Con l'attuale calendario gregoriano, le regole per gli anni bisestili sono le seguenti:
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
Sfortunatamente, questo metodo è disattivato di un giorno ogni 3216 anni.
Un possibile metodo per riformare il calendario è la seguente regola:
if year is divisible by 128, COMMON YEAR
else if year is divisible by 4, LEAP YEAR
else, COMMON YEAR
Ciò ha il vantaggio di non richiederci di cambiare nuovamente i nostri calendari per altri 625.000 anni, dare o avere.
Supponiamo che il mondo intero decida che, a partire da ora, utilizziamo questo sistema ogni quattro anni è un anno bisestile, tranne ogni 128 anni, cambiando i nostri calendari come segue:
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
In che modo ciò influirebbe sugli algoritmi del giorno della settimana?
La sfida
- Data una data dall'anno 2000 all'anno 100000, trova il giorno della settimana in questo nuovo calendario.
- È consentito qualsiasi formato di input e output purché si specifichino chiaramente quali formati si stanno utilizzando.
- Questo è il golf del codice, quindi cerca di rendere le tue soluzioni il più golfose possibile!
Casi test
"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
Suggerimenti e feedback sulla sfida sono i benvenuti. Buona fortuna e buon golf!