最近ナンプレにはまっている。
ナンプレはナンバープレイスというアメリカ生まれのパズルだ。日本でニコリというパズル専門の出版社が「数独」と名付け紹介し、それから世界中に広まった。
ルールは簡単で、タテヨコ9×9のマスに1~9の数字を入れ、列、行、太枠で囲まれた3×3のブロック内に同じ数字が重複してはならない、というものだ。
最初に入っているヒントの数字から空マスを埋めていくのだが、ヒントによって難易度が左右され、なかなか奥が深い。
僕も最近始めたばかりなので偉そうなことは言えないが、初級レベルだと一定のセオリーで解けていく。だけど上級レベルになると一筋縄でいかない。
背理法っていうんですか?2つの数字の候補が入るマスに着目し、片方の数字が入ると仮定して解き進め、矛盾が生じたらもう一方の候補数字が正しという証明方法で解いていくやり方があるのだ。
鉛筆で書いてマスを埋めていく場合、この方法で矛盾が生じたら、これをやり出すところまで消しゴムで消して・・・みたいなことになるわけだ。
どこを埋めてきたか記憶力が良けりゃいいのだが、そう簡単でもないので、トレーシングペーパーを当てて、それで解いていくという技もあるらしい。
それもめんどくさいので、パズルを解くためだけのおバカなアプリをFLASHムービーで作ってみた。
名付けて「ナンプレ盤」(↓実際に動作します)。胡散臭そうでしょう?
このアプリの最大のメリットは、鉛筆の芯と消しゴムを消費しないこと(電力は消費する)。
矛盾が生じたら一手ずつ元に戻すことができ、完成したらチェックもしてくれるという優れもの(ただし間違っている場合は、間違っている場所を指摘してはくれない)。
パズルを解くためだけのアプリなので問題は実装していない。だから自分で本などからコピーしないといけない。さらに保存機能がないので、やり始めたら最後までやらないと全部消え去ってしまう、という仕様だ。
初期画面は空のセル(マス)だけの画面だ。最初はヒントを埋めて問題を作る。
セルをクリックするとテンキー(9までしかないけど)パネルが現れ、どれか数字を選ぶとセルに入力される。
間違えたときは、再度セルをクリックし、他の数字を選ぶか「DEL」ボタンで消すこともできる。
パネルのボタン以外の空白部をクリックすると、何もせずにパネルが閉じる。
問題ができたら「スタート」ボタンをクリックする。「スタート」ボタンをクリックしたら問題の修正はできないので、よく確認してから「スタート」ボタンをクリックしよう。
解答画面に切り替わり、グレーだったセル内の文字が黒く変化し選択できないようになる。
空セルをクリックするとテンキーパネルが現れるが、今度のパネルは上段が確定するときのキーで、下段が仮置きのメモ用キーだ。
使い方は先ほどと同様。仮置きの数字は入力した順に4桁までメモできる。
「取り消し」ボタンは、クリックするたびに一手前の状態に戻る。
戻るのは確定した数字のみ。仮置きの数字は前の状態に戻らない。
「最初から」ボタンは、すべての解答セルをクリアする。
クリックすると下の「リセット」ボタンと同様な確認ダイアログが現れる。本当にクリアするときは「いいよ」ボタンを、キャンセルするときは「いや~ん」ボタンをクリックする。
「リセット」ボタンは、問題も何もかもクリアして初期画面に戻る。
クリックすると下のように確認ダイアログが現れる。本当にリセットするときは「いいよ」ボタンを、キャンセルするときは「いや~ん」ボタンをクリックする。
矛盾があればダイアログを表示し、「続ける」ボタンで問題に復帰できる。
各行、各列、各ブロックそれぞれで足し算し45になったらOKという判定しかしていないので、矛盾した場所の指摘はしてくれない。プログラムがめんどくさいので。
正解なら「おめでとう」メッセージと完成までにかかった時間を表示する。メッセージは数回点滅してから消える。消えたら本に数字を書き写すなりしてください。しなければ本はいつまでも新品のときのままだ。
「リセット」ボタンは解答画面のときと同じだ。
こんなアプリの需要があるかどうか疑問だが、そんな奇特な方のために「ナンプレ盤」をダウンロードできるようにリンクを貼った。フリーでお使いください。
・「ナンプレ盤」numpl-van.swf(numpl-van.zip/41KB)
<2011年2月17日追記>
バージョンアップしたので、こちらのエントリーからダウンロードください。
ZIPの圧縮ファイルだが、中身はただのSWFファイル(上に表示しているものと同じ)なのでWEBブラウザ画面にドロップすれば使えるはず。画面いっぱいのサイズで表示するので、お好きなサイズになるようブラウザの画面サイズを変えてください。
保存機能やリンクなどないので、とくに悪さをするようなことはないと思うが、万一の場合責任とれないのでご利用は自己責任でお願いいたします。また再配布やZIPファイルへの直リンクはご遠慮ください。
エンジョイ!ナンプレ!