Eén van de UGent nieuwjaarskaarten1 leert ons dat we in 2019 de kalenders van 2013, 2002 of 1991 konden hergebruiken.

kalenders hergebruiken
In 2019 kan je de kalender hergebruiken van 2013, 2002 of 1991.

Maar hoelang moeten we de kalender van 2018 eigenlijk bewaren vooraleer we die opnieuw kunnen gebruiken? Daarvoor is het wachten tot 2029. Wie dat te lang vindt, kan alvast de kalender van 2018 hergebruiken tijdens de eerste twee maanden van 2024 (een schrikkeljaar).

Opgave

We kunnen de kalender van jaar $$j_1$$ hergebruiken in jaar $$j_2$$ als alle corresponderende dagen op dezelfde datum (dag en maand) en weekdag vallen bij het dag per dag aflopen van de twee kalenders. Gevraagd wordt:

Voorbeeld

>>> eerste_verschil(2018, 2019)
datetime.date(2019, 1, 1)
>>> eerste_verschil(2018, 2024)
datetime.date(2024, 2, 29)
>>> eerste_verschil(2018, 2029)

>>> hergebruik_kalender(2018)
2029
>>> hergebruik_kalender(2018, True)
2007
>>> hergebruik_kalender(2019, vorig=False)
2030
>>> hergebruik_kalender(2019, vorig=True)
2013

>>> hergebruik_kalenders(2018, 10)
[2029, 2035, 2046, 2057, 2063, 2074, 2085, 2091, 2103, 2114]
>>> hergebruik_kalenders(2018, 10, True)
[2007, 2001, 1990, 1979, 1973, 1962, 1951, 1945, 1934, 1923]
>>> hergebruik_kalenders(2019, 10, vorig=False)
[2030, 2041, 2047, 2058, 2069, 2075, 2086, 2097, 2109, 2115]
>>> hergebruik_kalenders(2019, 10, vorig=True)
[2013, 2002, 1991, 1985, 1974, 1963, 1957, 1946, 1935, 1929]

Epiloog

Blijkbaar hebben we deze eeuw slechts 14 kalenders nodig:

kalender te hergebruiken in
2001 2007, 2018, 2029, 2035, 2046, 2057, 2063, 2074, 2085, 2091
2002 2013, 2019, 2030, 2041, 2047, 2058, 2069, 2075, 2086, 2097
2003 2014, 2025, 2031, 2042, 2053, 2059, 2070, 2081, 2087, 2098
2004 2032, 2060, 2088
2005 2011, 2022, 2033, 2039, 2050, 2061, 2067, 2078, 2089, 2095
2006 2017, 2023, 2034, 2045, 2051, 2062, 2073, 2079, 2090
2008 2036, 2064, 2092
2009 2015, 2026, 2037, 2043, 2054, 2065, 2071, 2082, 2093, 2099
2010 2021, 2027, 2038, 2049, 2055, 2066, 2077, 2083, 2094, 2100
2012 2040, 2068, 2096
2016 2044, 2072
2020 2048, 2076
2024 2052, 2080
2028 2056, 2084