Zgodnie z tym filmem rok słoneczny wynosi 365 dni, 5 godzin, 48 minut, 45 sekund i 138 milisekund . W obecnym kalendarzu gregoriańskim zasady dotyczące lat przestępnych są następujące:
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
Niestety ta metoda jest wyłączona o jeden dzień co 3216 lat.
Jedną z możliwych metod reformowania kalendarza jest następująca zasada:
if year is divisible by 128, COMMON YEAR
else if year is divisible by 4, LEAP YEAR
else, COMMON YEAR
Ma to tę zaletę, że nie wymaga od nas zmiany kalendarzy przez kolejne 625 000 lat, dawania lub przyjmowania.
Powiedzmy, że cały świat decyduje, że od teraz używamy tego systemu co cztery lata, co roku przestępnym, z wyjątkiem co 128 lat, zmieniając nasze kalendarze w następujący sposób:
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
Jak wpłynęłoby to na nasze algorytmy dnia tygodnia?
Wyzwanie
- Biorąc pod uwagę datę od roku 2000 do roku 100000, znajdź dzień tygodnia w tym nowym kalendarzu.
- Dowolny format wejściowy i wyjściowy jest dozwolony, o ile wyraźnie określisz, jakich formatów używasz.
- To jest golf golfowy, więc postaraj się, aby Twoje rozwiązania były jak najbardziej golfowe!
Przypadki testowe
"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
Sugestie i opinie na temat wyzwania są mile widziane. Powodzenia i dobrej gry w golfa!