冬至を求める

日本テレビで緊急警告!!2012年人類破滅!?ノストラダムス最後の大予言SPなんてのをやっていた。
2012/12/21に終わるんだと。
その日は冬至ですね。


今日も冬至


高度な文明も天文学の計算もできないので、
groovyを使って冬至の日を求める。
でも、マヤ文明に負けてるや・・・


求め方はwikipediaの冬至から


ソース

def winterSolstice(year){
    mod = year % 4
    switch (mod){
        case 0:
            if (1900 <= year && year <= 1988) {
                println "${year}/12/22"
            } else if (1992 <= year && year <=2096) {
                println "${year}/12/21"    
            } else {
                println "unkown"
            }
            break;
        case 1:
            if (1901 <= year && year <= 2025) {
                println "${year}/12/22"
            } else if (2029 <= year && year <=2097) {
                println "${year}/12/21"
            } else {
                println "unkown"
            }
            break;
        case 2:
            if (1902 <= year && year <= 1918) {
                println "${year}/12/23"
            } else if (1922 <= year && year <= 2058) {
                println "${year}/12/22"
            } else if (2062 <= year && year <= 2098) {
                println "${year}/12/21"
            } else {
                println "unkown"
            }
            break;
        case 3:
            if (1903 <= year && year <= 1955) {
                println "${year}/12/23"
            } else if (1959 <= year && year <= 2095) {
                println "${year}/12/22"
            } else if ( year == 2099 ) {
                println "${year}/12/21"
            } else {
                println "unkown"
            }
            break;
        default:
            println "unkown"
    }
}
winterSolstice(2001)
winterSolstice(2002)
winterSolstice(2003)
winterSolstice(2004)
winterSolstice(2005)
winterSolstice(2006)
winterSolstice(2007)
winterSolstice(2008)
winterSolstice(2009)
winterSolstice(2010)
winterSolstice(2011)
winterSolstice(2012)

winterSolstice(1918)
winterSolstice(1922)
winterSolstice(1955)
winterSolstice(1986)
winterSolstice(1996)
winterSolstice(2033)
winterSolstice(2066)
winterSolstice(2099)

実行結果

groovy winterSolstice.groovy
2001/12/22
2002/12/22
2003/12/22
2004/12/21
2005/12/22
2006/12/22
2007/12/22
2008/12/21
2009/12/22
2010/12/22
2011/12/22
2012/12/21
1918/12/23
1922/12/22
1955/12/23
1986/12/22
1996/12/21
2033/12/21
2066/12/21
2099/12/21