Astronomically Obfuscated

天文学的難読化

受賞者:James Bonfield

引用元: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
4つのガリレオ衛星
図:4つのガリレオ衛星

中央の大きな円が木星で、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`
1610年1月7日ごろのガリレオ衛星
図:1610年1月7日ごろのガリレオ衛星

翌日の夜に見たところ、予想に反してすべての星が東側に移動していた。

$ ./rince 0 `./dmy2jd  8.8 1 1610`
1610年1月8日ごろのガリレオ衛星
図:1610年1月8日ごろのガリレオ衛星

2日後の夜に見たところ、すべての星が西側に移動していた。 これらの天体は太陽ではなく木星の周りを回っているのでは?ということで地動説に行き着いたとか。

$ ./rince 0 `./dmy2jd 10.8 1 1610`
1610年1月10日ごろのガリレオ衛星
図:1610年1月10日ごろのガリレオ衛星