詰将棋創作プログラミング 1 最初は年賀詰
[2014年1月16日最終更新] 年賀詰の作品を掲載
詰将棋創作プログラミング 1 最初は年賀詰
1) 詰キストは年賀詰の季節
年賀状の内容は様々だが、詰将棋作家は、年賀状やホームページに、その年の新年を祝う詰将棋を載せたりする。おもちゃ箱では毎年年賀詰の展示室を開いている(2013年、2014年)。2014年の年賀詰なら2014や26、1、午(ウマ)、などを何らかの形で詰将棋に織り込むことが多い。初形曲詰、あぶり出し、立体曲詰(2から6など)といった曲詰がポピュラーだが、ウマの年なので、馬を使った年賀詰にしようと思った。
平成26年(ウマ年)1月1日を表現する意味で、盤面は詰方26馬、受方11玉とすることにした。さて、持駒は何にする?
多くの組み合わせを作って、その中で良さそうなものを選ぶ。これは詰将棋創作プログラミングにぴったりの題材なのではないか。そこで、初めての創作支援ソフトとして、「持駒サーチ」プログラムの開発を始めた。
2) 持駒サーチプログラムの開発
持駒サーチは、盤面を入力にして、詰将棋として(余詰がなく、駒も余らず)成立する持駒の組み合わせを求めるプログラムである。このためには、
1)組み合わせをなるべく効率よく生成する
2)生成した組み合わせが詰将棋として成立しているか確認する(解答、余詰チェック)
の二つが必要。
全て0から作ることも考えられるが、解答、余詰チェックには柿木将棋という優れたソフトがあるので、2)の部分は柿木将棋を活用させていただき、1)の部分をプログラムすることにした。
この年賀詰の可能な持駒の組み合わせは、3×2×5×5×5×5×19通り。7万をこえる。この全検では実用的な時間内には終わらない。また、持駒があまり多いのは年賀詰にはふさわしくない。
そこで、持駒の枚数と駒の種類の上限を指定できるようにし、最大6枚、最大3種の範囲でサーチすることにした。しかし、詰む場合はたいてい一瞬だが、詰まない場合はなかなか判明せず、結局時間を限って打ち切るしかない。したがって、この範囲だけでも全検はまだ難しい。
持駒のある組み合わせが詰めば、その組み合わせを包含する組み合わせはすべて詰む。逆にある組み合わせが詰まないならば、その組み合わせに包含される組み合わせはすべて詰まない。このことを考慮して調べる順番を決めれば、かなり時間の短縮になるはずだ。
3) 実際に年賀詰を作ってみた
とりあえずすぐできそうな部分だけ実装し実行してみたら、約3時間でサーチが完了。3通りの完全作(候補)がピックアップされた。工夫すれば、更に時間を短縮することもできそうだ。2014年の年賀詰は手順をみてこの中から選択した。元旦におもちゃ箱、詰将棋メモに掲載する予定(シンプルな形なので、衝突したらごめんなさい)。
*2014年1月16日 年賀詰の作品を掲載
詰将棋創作プログラミング 作品1 TETSU
2014年の年賀詰
平成26年(午年)1月1日
実行時のスクリーンショットはこんな感じ。
解答、余詰チェックという難しい部分を柿木将棋に任せたので、持駒サーチのプログラム自体は1日で完成(200行程度)。そのぐらいならいろいろ試してみたいという方もいると思うので、次回はプログラムからの柿木将棋の利用方法を説明しよう。
| 固定リンク
「コンピュータ詰将棋」カテゴリの記事
- 詰将棋創作プログラミング 26 同一作リストの分析(2019.03.27)
- 詰将棋創作プログラミング 25 記録に挑戦!(2018.08.30)
- 詰将棋創作プログラミング 24 飛角図式のランダム生成(2018.01.22)
- 詰将棋創作プログラミング 23 柿木将棋自動化の効果(2017.01.22)
- 詰将棋創作プログラミング 22 詰将棋創作AIを作るには(2017.01.17)
コメント
良かったら、柿木将棋と連携させる方法についても教えてください。私のほうでも試してみたいので。
投稿: やねうらお | 2013.12.27 21:25
やねうらおさん、見ていただきありがとうございます。
柿木将棋との連携方法、今書いてまして、29日にアップ予定ですので、少しお待ちください。
投稿: TETSU | 2013.12.27 23:09
返信ありがとうございます。それは楽しみです!私にとって、いいお年玉になりそうです。(笑)
投稿: やねうらお | 2013.12.27 23:57