2012年7月3日火曜日

世界最高難度の数独

世界最高難易度の数独が公開されたというニュースを伝え聞いた.自分ではほとんどこういうパズルはしないのだが,コンピュータで解いたらどのくらい時間が掛かるのだろうか,という好奇心で,試してみた.

SageにはSudokuというクラスがあって,その名の通り数独のソルバーである.問題を入力し,ボタン一発で回答が得られる.問題を与える形式には幾つかの方法があるが,下では$9\times 9$の整数行列として与えている.空欄は$0$とする.

A=matrix(ZZ,[[8,0,0,0,0,0,0,0,0],[0,0,3,6,0,0,0,0,0],[0,7,0,0,9,0,2,0,0],[0,5,0,0,0,7,0,0,0],[0,0,0,0,4,5,7,0,0],[0,0,0,1,0,0,0,3,0],[0,0,1,0,0,0,0,6,8],[0,0,8,5,0,0,0,1,0],[0,9,0,0,0,0,4,0,0]]) q=Sudoku(A) print "The problem is\n", q ans = q.solve() print "The answer is\n", ans.next()

解答はあっという間にえられて,問題を入力している時間の方が長いのだった.

0 件のコメント:

コメントを投稿