引用元:https://www.ioccc.org/2000/rince.c
審査員・作者による説明:https://github.com/ioccc-src/winner/blob/main/2000/rince.hint
動作
木星の4つのガリレオ衛星をプロットする。
$ gcc -o rince rince.c -lX11 -lm
$ ./rince
中央の大きな円が木星で、Iはイオ、IIはエウロパ、IIIはガニメデ、IVはカリスト。
第1引数はシミュレーション速度、第2引数はシミュレーションの起点時刻(ユリウス通日で指定)。
次のように実行するとアニメーションする。
$ ./rince 0.0001 2441193.6
解説
コードの前提に「巨大な彗星が木星や地球の起動を変えないこと」「紀元前2000年問題(あんまり昔だと計算が不正確になる)」「火星から観測した結果とは違うのでポータブルではない」などと書いてあっておもしろい。
コード形状は”4713BC”と”X”。前者は天文学で使われるユリウス通日の起点の日(紀元前4713年1月1日)が由来。”X”はX Window Systemのロゴ。
賞名のAstronomicallyは「天文学的」という意味で、程度が大きいことの慣用表現とかけている。
次の3つは、ガリレオが衛星を発見した当時の様子とのこと。
1610年1月7日の夜に初めて観測し、木星を挟んで2つと1つの星を見つけた時の様子(IVには気づいてなかった?)。
$ make dmy2jd
$ ./rince 0 `./dmy2jd 7.8 1 1610`
翌日の夜に見たところ、予想に反してすべての星が東側に移動していた。
$ ./rince 0 `./dmy2jd 8.8 1 1610`
2日後の夜に見たところ、すべての星が西側に移動していた。
これらの天体は太陽ではなく木星の周りを回っているのでは?ということで地動説に行き着いたとか。
$ ./rince 0 `./dmy2jd 10.8 1 1610`