pockestrap

Programmer's memo

ナンプレのアプリにタブ機能を実装した

少し前にナンプレのアプリをリリースしました。 今回はこのアプリにタブ機能を実装したのでお知らせします。

Androidユーザーの方はダウンロードして使っていただけると嬉しいです。

pocke.hatenablog.com

play.google.com

タブ機能とは?

この機能を使うことで、ナンプレを解く時に複数のタブで同じ問題を解けるようになります。 これによって、「1マス仮に埋めて、それが成立するかを確かめる」という解法がアプリ上だけで簡単に使えるようになります。

具体例

具体例を見てみましょう。次の盤面は、いろいろ考えても打つ手がない状態です1

f:id:Pocke:20181211182050p:plain
打つ手なし

このような時にタブ機能の出番です。画面上部のプラスボタンを押してタブを新規作成します。すると現在の盤面と全く同じタブ"2"ができました。 このタブ"2"の盤面はいくらいじってもタブ"1"の盤面には影響がありません。

f:id:Pocke:20181211182602p:plain
タブ2

では、マスをひとつ仮定しておいてみましょう。

今回は左下のブロックの真ん中のマスに、仮に3を入れて考えてみます2。 この仮定の元盤面が矛盾することなく全て埋まれば、それでこの問題はクリアです。もしどこかで矛盾が生まれれば、このマスは3ではないということがわかります。

f:id:Pocke:20181211182733p:plain
3を仮定

仮定した後問題を進めたのが次のスクリーンショットです。しばらく解き進めていくと、左中央の列に3が2つ入ってしまいました! これは矛盾しているので、最初に3を仮定したのは間違っていたということがわかりました。

f:id:Pocke:20181211183431p:plain
3が矛盾!

ということで、タブ1に戻ってやり直しましょう3。 先ほど3を確定したマスに3が入らないことが分かったので、代わりにその隣のマスに3が入ることがわかります。これを突破口に問題を解き進めます。

f:id:Pocke:20181211183827p:plain
タブ1に戻ってやり直し

すると今度は矛盾すること無く問題を最後まで埋めることができました!4

f:id:Pocke:20181211184115p:plain
クリア!

まとめ

このようにタブ機能を使うことで、仮定を用いたナンプレの解答をとても簡単に行えるようになります。

Challenging Number Placeでは高難易度の問題を多数収録しており、今回のタブ機能が役に立つことも多いと思います。 難しい問題を便利なアプリで解いてみたいと思った方はぜひダウンロードしてプレイしてみてください。

play.google.com


  1. もしかしたら、ちゃんと見たら打つ手があるかもしれない。。

  2. 仮定を置くときは、どちらに転んでも他のマスが連鎖して埋まるようなマスを選ぶのがコツです。今回の盤面では下段中央のブロックの 1,8 もしくは 4,9 の組を狙っても良さそうですね。

  3. 画像ではタブ1から更に新しくタブ3を作っていますが、あまり意味はないです。

  4. スクリーンショットではめっちゃ解答に時間がかかっているんですが、普段はこんなに時間かからないです。休み休みやってたらこんなになってしまった。。