http://vitas.matfyz.cz/txt/kalendar-recycled.html

Kalendář recycled

Chovejte se ekologicky -- recyklujte kalendáře

Proč každý rok kupovat nový kalendář? Stačí vlastnit sadu 14 kalendářů a na záčátku roku si vybrat ten správný. V případě, že dokážete v přestupné roky prohodit kalenář i na záčátku března, stačí dokonce kalendářů sedm.

Následuje tabulka, kdy začínají jednotlivé roky. Pokud jde o rok přestupný, kryje se s danou třídou pouze první dva měsíce (-) nebo posledních deset (+).

Mon 1951 1956+ 1962 1968- 1973 1979 1984+ 1990 1996- 2001 2007 2012+ 2018 2024- 2029 2035
Tue 1952- 1957 1963 1968+ 1974 1980- 1985 1991 1996+ 2002 2008- 2013 2019 2024+ 2030 2036-
Wed 1952+ 1958 1964- 1969 1975 1980+ 1986 1992- 1997 2003 2008+ 2014 2020- 2025 2031 2036+
Thu 1953 1959 1964+ 1970 1976- 1981 1987 1992+ 1998 2004- 2009 2015 2020+ 2026 2032- 2037
Fri 1954 1960- 1965 1971 1976+ 1982 1988- 1993 1999 2004+ 2010 2016- 2021 2027 2032+ 2038
Sat 1955 1960+ 1966 1972- 1977 1983 1988+ 1994 2000- 2005 2011 2016+ 2022 2028- 2033
Sun 1956- 1961 1967 1972+ 1978 1984- 1989 1995 2000+ 2006 2012- 2017 2023 2028+ 2034

Příklad: pokud máte kalendář z roku 1981 můžete ho použít v roce 2009, 2015, první dva měsíce v roce 2020 atd. Obdobně pokud máte kalendář z přestupného roku 2000, přijde si na své první dva měsíce v letech 2011, 2022, posledních deset měsíců v letech 2006, 2017, 2023, a celý rok 2028.

Problém je s Velikonoci, které asi nebudou odpovídat. A také je možné, že se od výchozího roku změnily státní svátky.

#!/bin/sh


HS="+"
LS="-"

for y in `seq 1950 2038` ; do
	L=`date -d "1/1 $y" "+%a %Y"`
	H=`date -d "3/5 $y" "+%a %Y$HS"`
	if [ "$L$HS" = "$H" ] ; then
		echo "$L"
	else
		echo "$L$LS"
		echo "$H"
	fi
done |sort  |

while read DAY YEAR ; do 
	if [ "$DAY"  !=  "$LASTDAY" ]; then
		echo  -en "\n$DAY "
	fi
	echo -n "$YEAR "
	LASTDAY="$DAY"
done

echo


Zpět: http://vitas.matfyz.cz/txt/kalendar-recycled.html