最初のページに戻る

数独のページ


数独というパズルをご存知でしょうか。
9×9(16×16というのもあるそうですが)のマスに次のルールで1〜9の数字を埋めていくパズルです。

1. 縦の同一列、横の同一行には同じ数字を入れてはいけない。
2. 9×9をさらに3×3の9つのブロックに分解し、各々のブロックには同じ数字を入れてはいけない。

このくらいのルールならプログラムでも解けるのではと思い、VBで作ってみました。
意外と簡単で、ニコリさんの本の難問でも解けるプログラムが2日(合わせて4-5時間でしょうか)でできました。これなら、問題も作れるのではと思い、取り組んでみました。5日くらいかけて(合わせて10時間くらいでしょう)やっとできました。

ルールとしては、上に挙げた1.2.以外に次を追加しました。
3. 答えが一意になるものだけを問題とする。たとえば違う列の同じ行同士に「1」と「2」があるというのは問題としない。
4. 解くにあたり、3.で述べたことを回避するという解法を使用しなくても、1.2.の解法だけで解くことのできるもののみを問題とする。

とりあえず作成した問題は3000題です。
ExcelのWorkSheetです。
1-1000題 1001-2000題 2001-3000題
掲載の3000題以外に2000題の問題を追加していましたが、同一問題の繰り返しが生じていることが判明しましたので、削除しました。(11/11/23)
その後、不具合を解消し、新たに問題を作成しました。(11/12/04)
問題 No.18 解答 No.18.  .問題 No.19 解答 No.19


なお、問題の他サイトへの転載等はお断りします。

Excelのシートの構成は2-10行が1題目、12-20行が2題目、で以下9992-10000行が1000題目となっています。


数独の問題をプログラムにて作成することに限界を感じています。
(掲載してある問題は限界とは関係なしに作成したものです。)
限界とは、同じ問題か異なる問題かを判別するのが困難であるということです。
ある一つの問題について、
1. 90度または180度または270度回転させたもの
2. 左右または上下対称のもの。
3. 1〜3行目(列目)、4〜6行目(列目)、7〜9行目(列目)で相互に入れ替えたもの。
4. 1〜9の数字を単に相互で置き換えたもの。
の操作を行って作成した問題は同一とみなすべきと考えます。
掲載の問題に同一のものがあるかを判定するプログラムを作成することは私にはできそうにありません。


最初のページに戻る