入力して解くナンプレ

自分で入力したナンバープレース(数独)の問題を解くことができます。
新聞や書籍のナンバープレースの問題を紙と鉛筆を使わずにアプリに入力して解くことができます。
解けなかった他のアプリのナンバープレースの問題を入力すれば再び解くことができます。
問題を保存しておく機能があるので書籍のナンバープレースの問題を全部入力しておき、後で解くことができます。
保存した問題を難易度順に並べることができ、好みの問題を選んで遊べます。難易度の判定は人が解くときの手順を意識した解析をしています。
また、問題を作る機能があります。パターンを入力して、好みの難易度の問題を作ることができます。出来上がるナンプレの問題は理詰めで解けるものばかりです。
自動で解いたときには答が複数あるかどうかを判定するので、問題が正しいかどうかがわかります。

「入力して解くナンプレ」をGoogle Playでダウンロードする

「入力して解くナンプレ」をGoogle Playでダウンロードする

 

ナンバープレースのルール

ナンバープレースの9×9のマスにはそれぞれ1~9の数字が1つづ入ります。すべての縦、横、3×3のブロックにそれぞれ1~9の数字が1つづ入るように並べるパズルです。初期状態はいくつかのマスに数字が入っており、この並び方によりパズルの難易度が大きく変わります。

アプリの使い方

「入力」タブ

ナンバープレースの問題を入力します。

「新規」ボタン
ナンプレの問題の入力を新規に始めます。
「マス」のボタンで選択したマスに入力した数字だけがナンプレの問題になります。

「問題として保存」ボタン
選択したマスの数字が問題として保存されます。また、その問題を履歴にも残すかどうか選択できます。
選択したマス以外のマスをすべて埋めて保存すると問題を作成として記録に残ります。

「入力」タブ

 

アプリは画面分割しても使えます。タブレットを使っていれば写真やスクリーンショットした問題を容易に入力できます。

 

「手動」タブ

入力したナンバープレースの問題を自分で解きます。数字を選択し、置きたいマスをタップします。

「メモ」と「メモNO」ボタン
候補になる数字や候補にならない数字のメモを記入することができます。

「すべてのメモ」ボタン
縦、横、3×3のブロック内に配置できる数字の候補のメモをすべて記入します。すべて自力で解きたいときには使わないボタンです。

履歴に保存されている問題を完成させると、手動で完成したことが記録されます。また、メモ機能を全く使わないとメモを使わずに解いたことが記録されます。解いていない問題を選ぶときにご活用ください。

「手動」タブ

 

「自動」タブ

入力したナンプレの問題をアプリを使って解きます。

「解き方1~5」ボタン
それぞれのボタンに設定された解き方を、今の盤面に適用してナンプレの問題を解きます。決定できる数字や、減らせる候補があるとどのような解き方をして進めることができたかを表示します。各ボタンの解き方は下で説明します。

「完成させる」ボタン
今の盤面から「解き方1~5」を自動的に適用し、ナンプレを完成させようとします。完成しなければ残りのマスを総当たりでチェックし完成させます。
ナンプレが完成し答えがひとつだったときは「完成しました」と出力されます。
答えがない場合や複数の答えがありナンプレの問題として相応しくない場合は、そのメッセージが出力されます。
難しい問題を解くと、解くまでに時間がかかることがあります。放っておけば、いずれ答えが出力されます。

「リセット」ボタン
はじめからナンプレの問題を解くときに押します。
リセットした直後に「完成させる」ボタンで解くと、完成させるボタンの手順が履歴に保存されます。総当たりが必要だった場合「9」が保存されます。履歴の難易度順のソートはこの手順の情報でソートします。
また、二コリが説明する「予約」や「井桁」などの高度なテクニックが必要だった場合にも履歴に保存されます。保存されるテクニック名は「予約2~8」、「井桁(X-Wing)」、「Swordfish」、「Jellyfish」。

「自動」タブ

 

Youtubeで保存した問題を難易度順に並べる動画を見る

 

「作る」タブ

問題のパターンを入力して、好みのレベルのナンプレの問題を作ることができます。
はじめに問題のパターンを点対称(盤の中心が対称点:ニコリの形)にするか、線対称(左右対称)にするか非対称(どこにでも配置できる)にするかを選びます。
「マスの配置」ボタンを押すとある程度マスを配置してくれます。ボタンを何度か押して好みの形にするか、自分でも直接タップしてパターンを作ることができます。マスの数は最低でも20以上くらい、多い方が問題が完成しやすい傾向がありますが、レベルの高い問題を作るときはやや少な目の方が良いかもしれません。
 
「LV1」~「LV5」、「LV?」ボタン
作りたいレベルを選択します。レベルの目安は下記です。
「LV1」:新聞などに掲載される数独の「手はじめ」程度のレベル。
「LV2」:新聞などに掲載される数独の「腕だめし」程度のレベル。
「LV3」:「腕だめし」より難しいレベル。LV3までは慣れればメモがなくても頑張れば解けるかもしれません。
「LV4」:上級1のレベル。
「LV5」:上級2のレベル。上級1より難しいかもしれません。
「LV?」:レベルに関係なく問題を作ります。どうしても作りたいパターンがあるときに問題が完成しやすくなります。
 
問題が完成しないときは選択するマスの数や場所を変えたり、LVを変えたり、何度か試したり、完成するまで待ったりなど工夫が必要です。
完成したら「保存」するのをお忘れなく。

 

Youtubeで問題の作り方の説明を見る

 


メニュー「履歴」

履歴に残した問題の一覧を見ることができます。
それぞれの問題にコメントをつけたり、履歴を削除したりできます。
検索機能があるので書籍名などを入力しておくと必要なものだけを表示できます。
「自動」モードで作成した解き方の手順が保存されていれば難易度順にソートも可能です。難易度順はある程度の目安です。
「手動」モードでまだ解いていない問題だけを表示するにはメニューの「非表示」を選択します。
元の入力した順にすべて表示に戻すには「リセット」ボタンを押します。

コメントの下の数字の列は「自動」モードで「リセット」→「完成させる」で解いたときに保存される操作手順です。1~5の数字はそれぞれ「解法1」~「解法5」、9は総当たりで解いたことを示します。難易度順のソートはこの値を基にソートします。

メニュー「履歴」

「コメント編集」では文字の長押しで文字のコピー、貼り付けなどができます。入力した書籍のタイトルをコピーするときなどにお使いください。

 

メニュー「記録」

アプリを使用した記録が残ります。
「自動」の使用するテクニックの記録は「リセット」→「完成させる」をしたときのみ記録されます。

メニュー「記録」

 

コラム 「自動」タブでの解析について

このアプリの「自動」タブの機能でニコリの書籍「超激辛数独9 最上級」の問題を解くとたったひとつだけ理詰めで解けない問題があります。(総当たりでの解析をしないと解けず、解き方の数字の最後が9になります。)ニコリの書籍の問題はすべて理詰めで解けるというので、まだアプリの解析方法をチューンナップする余地がありそうです。
しかし、アプリにどんな解き方を盛り込んだらその問題が解けるのかわかりません。残りの一問が解ける方がいましたら、どこどこに解説されている方法を使うと解けるよなどお知らせ頂けたら幸いです。アプリに盛り込めるか検討してみます。
とは言え、超激辛数独の問題がほとんど解けるので、このアプリの解析能力はそこそこ良いと思います。


解法の説明

解法1
縦、横、3×3のブロックそれぞれで候補が1つだけの数字を決定します。
下の例では、1行目の空き升は1番目、4番目、9番目ですが、それぞれの候補の中で1が含まれるのは1番目の升だけなので、1番目の升を1に決定します。同じように、縦の列、3×3の升についても調べ、1つしかない候補を決定します。

ナンプレの解法1

 

解法2
二コリの説明する「いずれにしても」で候補を消します。
① 下の図で、1のある縦の列にはもう1は入りません。
② 左上の3×3の升を見たときに、①の縦1列には1が入らないので、1が入るのは②の2か所のどちらかになります。
③ ②の2か所のどちらかが1なので、「いずれにしても」③の列の他の部分には1は入りません。
④ 上段、真ん中の3×3の升を見たときに、③の部分に1が入らないので、残った④の位置の1が決定します。 このように、2つの升のいずれかに値が決まることがわかると、他の升にはその数が入らないことがわかります。解法2では③の1列の候補を消すところまで実行します。

ナンプレの解法2

 

解法3

横の行、縦の列、3×3の升にない候補になる数字が1つだけ(図では9だけ)のときに数字を決定します。

ナンプレの解法3

解法4

二コリが説明する「予約」で候補を消します。予約2~予約8まで試します。予約は二国同盟、三国同盟などn国同盟と説明されているサイトもあります。英語ではNaked Pair、Naked Triple、Naked Quadruple・・・と言われることもあります。

解法5

二コリが説明する「井桁」で候補を消します。井桁はX-Wingと説明されているサイトもあります。
3行、4行に適用されたものはそれぞれSwordfish、Jellyfishとなります。

完成させる

残りのマスに対して「解法1~5」を試した後、解けなければ総当たりで答えを探します。


LINK


「作る」機能について

「作る」機能を追加するにあたり数独の問題作成の研究、コードの紹介をして下さり、快く使用を許諾頂いた皆様に感謝致します。

参考文献
篠埜功、座間翔「初期配置が指定された場合における高難易度数独問題の自動生成手法の提案および実装」情報処理学会研究報告 Vol.2017-GI-37 No.7 2017/3/7

株式会社タイムインターメディア、知識工学センター、UECアライアンスセンター「AIを利用したナンプレの問題自動生成 進化計算(山登り法)によるゼロからの進化計算」

(c) 2019 FUJIWARA Hirofumi, Knowledge Engineering Center, Time Intermedia, Inc. This code is licensed under MIT license (seeLICENSE.txt for details)


このアプリのプロモーションなどをしています。個人で作ったアプリの開発者が集まっています。