数学とプログラミングとくだらないこと

プログラミングの事とか数学のこととかを書いていきます。

ナンプレを解く

17日に研究室に配属されました。 10日に配属の発表があったとか聞いてない… (初日を知らずに昼ごろになって呼び出される羽目に…)

とりあえず、課題が出たのでやったのでその記録。

課題

いわゆる「ナンプレ」を解くプログラムを作ります。

方針

やったことは2つ。

  1. それぞれ空のマスについて、入る可能性のある数字をあげていき、一つしか可能性が無いマスに数字を埋める。
  2. 数字を埋められなくなったら、1つ空マスを選んで、入る可能性がある数字で埋めて1に戻る。

実際にコードを書いて試してみると、解けない問題があった。 原因は、2で埋めた数字が間違っていることがあるから。 カルノー図のサイクリックテーブルみたいなわけにはいかなかった… そこで、解くのに失敗したら、バックトラック(?)するように変更した。

コード

これ

まとめ

何度もバグに悩まされた。 ビットで集合表すなんてことをやってるから、バグが出た時に分かり難い。 条件を入れておく変数とビット集合を入れ違えるなんて間違いもした。

型チェックが無いってこんなに辛いことだったんだ…