Ocaml
id:selvaggioにフラれたので一人で寂しくOcaml勉強会へ。
先週のHaskellでの戦略は、
候補だけ絞って、あとは総当り
だったが、今日は、
候補を絞って、それだけで解けなければ、背理法を使うというものだった。
一つのマスの数字をなにかに仮定し、途中で矛盾が出ればその数字を候補から消す。
というものである。
ただ、1マス仮定するだけで、2マス以上同時に仮定することは無いプログラムになっていたので、下手すると解けないのもあるんじゃないかと思った。(けど知らない。)
このプログラムで解くと、9x9は1秒もかからないうちに解けた。
が、16x16は、15分くらいたっても解けなかった。その後どうなったのかは知らない。
日本では、割とナンバープレイスという呼び名のほうがメジャー(?)なのに、海外ではSUUDOKUと呼ぶのが一般的っていうのはなにかいろいろ間違ってるよね。という話をしてた。
いろんなSUUDOKUの問題が載ってる本を見せてもらった。
25x25はもちろん、12x12とか、28x28とか、なんか3x3がいっぱいつながったみたいな変なのもあった。
正直キモかった。プログラムじゃなくて自力で解く人を尊敬するよね。
どうも、
汎用性のあるSUUDOKU解くプログラムを作って、懸賞に応募しまくって儲けよう
プロジェクトがあるらしい(ネタです)
でも解くアルゴリズムとか、いろんな条件に柔軟に対応できそうな書き方とか、結構楽しそうだから時間があれば自分で作ってみたいと思った。(けど間違いなく時間は無い)
今日はこんなところ。