最初はナイトの動きの組み合わせを網羅的に調べさせていました。しかし、それだと7手でも Excel の上限である 1,048,576 行をはるかに超える 2,097,152 通り(8の7乗)の手順があり、遅いし、無駄があります。昨年の夏に開催されていたコンピュータチェスの大会で開発者の一人が読まなくて済む手をいかに除外するかが改良の鍵だと言ってましたが、今日の私はまさに無駄な計算をいかに減らすかの工夫をしていました。一応 解答を出せるまでは作りましたが、ルーク(スケートボード)は難しいので諦めました。
例えば、上のような問題だとしたら、下のように Excel のセルに配置を書いて Solve ボタンを押すと、
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgO9B8fWIUO7nWDMApt2VLd4eRA8z0uf6L0DnNJ1CQ3uxt-465qippGjF2wgxsFFzbNd_K7PQqPvXMZRKFFvYOB2j0VTRRaX9iMfpa06dN2UCgM984yACzOyGDp90wRJ_lT1UbKeuFiJdnO/s320/20141005b.png)
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjtfh2m_Ua7tYVlAw3AyPlRSHCM2Eh7Z_xkbAm_RNM7wBQLwb40gsmYueLQb-x7YN_Du4WmS6GTsoI_YUmFH5xVRFvtsaOd63hncjk2E2sYhyphenhyphen8yJOiGSKzUm_LcuVhj52GX_-TGgEAdGk_r/s320/20141005c.png)
上のような解答候補がポップアップで出て来ます。ちょっと見にくいかもしれませんが、この問題には答えが3通りあるということです。別のシートには以下のようなデバッグ情報(プログラムが間違っていないかどうか検証するための情報)も出るようにしています。
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjG9FD-N1Iv4eg894i5y6xWn6-mmQcJ_mVzwCLIJO5Q7NcErhTntj2bAeynno_M7CcMHIncjwOZioHAOj8eDKtJ3rcweuAtmtfMSq6DRhCju9ueTbYkKFXycqtZYsjvWFuwIOBE029fHzPJ/s320/20141005d.png)
妻になぜこのようなものを書いたのか聞かれましたが、パズルを解くのが楽しいのと同じように、パズルを解くアルゴリズムを考えることも私にとっては楽しいのです。チェスの解析プログラムを趣味で書いている人(昨年のコンピュータチェスの大会の参加者)の気持ちが少し分かりました。そこまでやるつもりはありませんけど。
0 コメント:
コメントを投稿