Ocaml

id:selvaggioにフラれたので一人で寂しくOcaml勉強会へ。


今日はOcamlによる数独解読プログラム。

先週のHaskellでの戦略は、


候補だけ絞って、あとは総当り


だったが、今日は、


候補を絞って、それだけで解けなければ、背理法を使うというものだった。


一つのマスの数字をなにかに仮定し、途中で矛盾が出ればその数字を候補から消す。
というものである。

ただ、1マス仮定するだけで、2マス以上同時に仮定することは無いプログラムになっていたので、下手すると解けないのもあるんじゃないかと思った。(けど知らない。)


このプログラムで解くと、9x9は1秒もかからないうちに解けた。
が、16x16は、15分くらいたっても解けなかった。その後どうなったのかは知らない。



日本では、割とナンバープレイスという呼び名のほうがメジャー(?)なのに、海外ではSUUDOKUと呼ぶのが一般的っていうのはなにかいろいろ間違ってるよね。という話をしてた。

いろんなSUUDOKUの問題が載ってる本を見せてもらった。
25x25はもちろん、12x12とか、28x28とか、なんか3x3がいっぱいつながったみたいな変なのもあった。
正直キモかった。プログラムじゃなくて自力で解く人を尊敬するよね。


どうも、

汎用性のあるSUUDOKU解くプログラムを作って、懸賞に応募しまくって儲けよう

プロジェクトがあるらしい(ネタです)


でも解くアルゴリズムとか、いろんな条件に柔軟に対応できそうな書き方とか、結構楽しそうだから時間があれば自分で作ってみたいと思った。(けど間違いなく時間は無い)

今日はこんなところ。