プログラムでナンプレを解こうとしたら長旅が始まった話1

たまたま見かけたのがきっかけでした

SNSで「誰か自作したナンプレ解いてくれないかな」という投稿を見かけた。

そのナンプレは以下のようなものだった。

※本人に迷惑がかかるといけないのでリンクは控えます

f:id:Hemus:20210908223343p:plain

見かけた問題

この問題を見た時ふと思い出したのだ。

「数年前に作ったプログラムで解けるんじゃね?俺天才じゃね?」

 

プログラムでナンプレを解こうとしたらプログラムが見つからなくて長旅が始まった話

ナンプレを解くプログラムを実行しようとMac内を探すこと30分経過、見つからない。

githubを探してもない。35分経過。

外付けHDDを探してもない。45分経過。

上みっつをもう一周探してみるも見つからない。1時間経過。

 

気持ちが折れかけた時、もう一ヶ所だけ可能性のある場所を思い出した。

TimeMachineを探したらあるかもしれない!年に一回もバックアップしてないけど!

 

2021/04/某日 ない

2019/12/某日 ない

2018/04/某日 ない

2017/11/某日 あった!あったよ!!!!

※これ以前のバックアップなし

 

この時点で1時間30分経過。

まだ闘いは始まってすらいない。

 

動かすのに苦戦したダイジェスト

  • プログラム(Java)はあったけど実行環境ないからEclipseから入れるよ!
  • Eclipse Standardだと面倒くさそうだったからAll in Oneで入れ直すよ!
  • ナンプレの問題入力データ作るのにスプレッドシート使っちゃうよ!関数よくわかんなくて時間かかったよ!
  • スプレッドシートからテキストファイルにコピペするエディタとしてなんでもいいからXcode使っちゃうよ!
  • Xcode使ったせいでペーストすると文末の連続したタブが勝手に消えたりするよ!
  • なんとか動いたけど久しぶりなせいで入力データミスっててエラー出まくりだよ!
  • ここまでに4時間経過したよ!

 

ようやく実行に成功

ようやく実行に成功したので実行結果載っけちゃうよー!

解けてなくない?

f:id:Hemus:20210908230210p:plain

実行結果

私は誓った。

絶対にプログラムで解いてやる、と。

※話しの続きが永遠にない可能性があります。

 

四年も前の処理を確認する

三日前のプログラムも覚えてないのに四年も前のプログラムなんて記憶に無。そんなに解法を実装した記憶もなかったので、ナンプレ解き方テクニック集とともにプログラムを見直した。

puzzle.dev

結果、テクニック6までとテクニック9が実装されているのがわかった。テクニック6までは一種のルールに則れば自動で解けるので、実質はテクニック9「二国同盟」のみ実装した状態だった。

それでも4年前に作った時は250問近く解いており(解いた問題を保存する機能がある)、なぜそんなに解けたのかというと、解けるまで仮置きしてマシンパワーでぶん回していたから。81マスだと仮置きで深さ3も再帰したら0.1秒もかからず解けるらしい。

一方で、今回の問題は576マス。上のような解けっぷりだと仮置きではとても厳しい。

 

さて、ナンプレ解き方テクニック集を参考に実装しますか。

 

hemus.hatenablog.com