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