pythonによる数独のソルバー その1

大学の授業で数独を論理問題的に解くみたいな話題が出てきて、数独を解くプログラムを自作してみるかーって思ったので、製作してみることに。

 

今回選んだ言語はpythonです。なぜpythonかというと、pythonを使える人は平均年収が最も高いといううわさを目にしたことがあるのでリスト構造が簡単に使えそうだったから。

 

アルゴリズムとしては単純で、とりあえず1から順番に入れていって、縦横ブロックのそれぞれで矛盾する箇所が出てきたら戻って別の数字を入れてみよう、というもの。

 

入力として、以下のようなテキストファイルを用意した。

f:id:ascor_amethyst:20160707001434p:plain

このテキストファイルを入力として、以下のようにpythonのコードを実行した。

f:id:ascor_amethyst:20160707001432p:plain

どうです?ちゃんと解けているでしょう?ww

 

ちなみに、複数解にも対応しているのですよ、これ。なので、例えば、作った数独が想定解以外の答えがないかを確認するのに使えます。詳しくは、また次回にでも。