トップ > プログラミング > Sudoku ナンバープレイスを課題にしたプログラム作りです。
2010/07/29 11:14
1. 数独
「数独」は「すうどく」と読みます。1から9までの数字でマス目(格子の目)を埋めるパズルです。「ナンバープレイス」とも呼ばれます。我が家で購読している北国新聞には、毎週土曜日に「チャレンジ数独(出題・二コリ)」と問題と解答が載ります。因みに、数独は出題者である二コリの登録商標になっています。世界選手権が開かれているほど世界的にも普及しています。英語標記は Sudoku または number-placement puzzle です。詳細についてはウィキペディアをご参照ください。
私が作成した問題になりますが、実際の出題と解答は次のようになります。
ルールは単純です。9×9の正方形には81個のマス目があります。これを9個のマス目を持つ区画に分けます。まず、下図(1)のように九つの行に分けます。下図(2)のように九つの列に分けます。そして、下図(3)のように3×3の九つの区画に分けます。合計27個の区画について、1から9までの九つの数字を、抜けも重複もなくこれらのマス目に入れます。
(1) 1×9の区画
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
|
|
(2) 9×1の区画
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 |
3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 |
4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 |
5 | 5 | 5 | 5 | 5 | 5 | 5 | 5 | 5 |
6 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 6 |
7 | 7 | 7 | 7 | 7 | 7 | 7 | 7 | 7 |
8 | 8 | 8 | 8 | 8 | 8 | 8 | 8 | 8 |
9 | 9 | 9 | 9 | 9 | 9 | 9 | 9 | 9 |
|
|
(3) 3×3の区画
1 | 2 | 3 | 1 | 2 | 3 | 1 | 2 | 3 |
4 | 5 | 6 | 4 | 5 | 6 | 4 | 5 | 6 |
7 | 8 | 9 | 7 | 8 | 9 | 7 | 8 | 9 |
1 | 2 | 3 | 1 | 2 | 3 | 1 | 2 | 3 |
4 | 5 | 6 | 4 | 5 | 6 | 4 | 5 | 6 |
7 | 8 | 9 | 7 | 8 | 9 | 7 | 8 | 9 |
1 | 2 | 3 | 1 | 2 | 3 | 1 | 2 | 3 |
4 | 5 | 6 | 4 | 5 | 6 | 4 | 5 | 6 |
7 | 8 | 9 | 7 | 8 | 9 | 7 | 8 | 9 |
|
上にあげた例題には、この単純なルールを満たす解答がただひとつだけ存在します。複数の解答があってもよいのかもしれませんが、そのような出題は一般的にはされないようです。出題者は、解答がただ一つになるように、出題時にマス目に入っている数字の値と位置を決めなくてはなりません。
区画を増やしたり、9×9の正方形を変形させたりすることで、いろいろなバリエーションが考えられます。正方形の対角線上の九つのマス目を新たな区画として追加することもできます。区画の追加は出題者側の負担になりこそすれ、解答者側には問題が解きやすくなります。
以上のように、数独のルールは非常に単純なので、アルゴリズムの記述に慣れるための実習課題として最適ではないかと思います。