Согласно этому видео солнечный год составляет 365 дней, 5 часов, 48 минут, 45 секунд и 138 миллисекунд . С текущим григорианским календарем правила для високосных годов следующие:
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
К сожалению, этот метод отключен на один день каждые 3216 лет.
Одним из возможных способов реформирования календаря является следующее правило:
if year is divisible by 128, COMMON YEAR
else if year is divisible by 4, LEAP YEAR
else, COMMON YEAR
Это дает нам преимущество, заключающееся в том, что мы не должны снова менять наши календари в течение еще 625 000 лет, «дайте» или «заберите».
Скажем, весь мир решает, что начиная с этого момента мы используем эту систему каждый четвертый год - високосный, за исключением каждого 128-го, меняя наши календари следующим образом:
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
Как это повлияет на наши алгоритмы дня недели?
Соревнование
- Учитывая дату от 2000 до 100000 года, найдите день недели в этом новом календаре.
- Разрешен любой формат ввода и вывода, если вы четко указываете, какие форматы вы используете.
- Это кодовый гольф, поэтому постарайтесь сделать ваши решения как можно лучше!
Контрольные примеры
"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
Предложения и отзывы о проблеме приветствуются. Удачи и хорошего гольфа!