最高のゲーム
引用元:https://www.ioccc.org/1993/leo/leo.orig.c
審査員・作者による説明:https://www.ioccc.org/1993/leo/index.html
マスターマインドのゲームマスターとソルバ。
実行ファイル名の最後がdだとゲームマスターになる。
$ gcc -o leo leo.c
$ mv leo mind
$ ./mind
(1296): ???
???の部分に予想を書くと、その成否を2桁で返す(上の桁は位置も数字も正しい数、下の桁は数字は正しいが位置が違う数)。
最後まで動かした例を示す。
$ ./mind
(1296): 5565
12
(240): 5232
12
(28): 2225
04
(6): 4542
20
(2): 1552
40
実行ファイルの最後がd以外だとソルバになる。
$ mv mind leo
$ ./leo
(1296): 2435
??
??のところに成否を2桁で埋めていく。最後まで進めた例を示す。
$ ./leo
(1296): 2435
01
(152): 1262
22
(7): 1226
40
カッコの中にある数字は、残る可能性の数を表している。
コードはジグザグ形状。特に意味はないと思う。 ソルバのguessは、特に最短解答を目指すものではなく、乱数生成していると思う。 実質6行程度であり、わりと短くまとまっていて良い。 ゲームマスターモードとソルバモードでコードが共有されているのはエレガント。