詰将棋創作プログラミング 5 一色図式を作る
[2014年1月26日最終更新]
詰将棋創作プログラミング 5 一色図式を作る
1) 一色図式とは
一色図式とは、玉以外の置き駒が1種類(通常は全駒)の詰将棋。その駒によって、金一色図式、桂一色図式などと呼ぶ。成駒は区別することが多い(飛一色図式、龍一色図式のように)。
一色図式を命名された金成憲雄氏が昨年10月頃亡くなられたとのこと(将棋雑記: 金成憲雄氏ご逝去)。ご冥福をお祈りいたします。
詰上りが一色になる詰将棋も作られていて、こちらは一色詰という。
2) 一色図式の創作には、駒位置サーチ
これまで、持駒サーチ、置き駒サーチを考えてきたが、一色図式は置く駒の種類は決まっているが、置くマスは決まっていないので、もう一つ別な手段が必要。それは駒位置サーチである。
置く駒だけでなく、置くマスまで指定すれば、持駒サーチだけで作図できるわけだが、そこまで限定すると、1作も見つからなかったり、既発表作と衝突したりする可能性も高い。
流石に、81マスどこに置いても良いとすると、組み合わせが多すぎるので、駒を置く範囲を限定することにしよう。例えば右上4×4とかするわけだ。
飛角図式など、置き駒条件の趣向詰は3つのサーチを組み合わせれば検索できるわけだが、駒の種類や成生の自由度があると計算量が大きくなるので、まずはシンプルな金の一色図式を作ってみることにしよう。
3) 既存の金一色図式を調査する
詰将棋データベース(TBase)は盤面の駒数で検索できるので、玉1枚金4枚で検索してみたら、52作品が検出された。全部見るのも大変なので、玉位置を11に決めて作ることにして、11玉の既発表作品を見てみよう。例によって同一作の発表は省く。
11玉(91玉)の金一色図式
- 35金43金|11玉14金24金|銀4 21手 新田道雄 詰パラ1977年2月
- 15金24金34金43金|11玉|桂4 25手 変幻自斉 妙華集61番(1981年10月)
- 15金33金42金|11玉24金|飛 13手 添川公司 近代将棋1986年6月
- 14金41金|11玉32金33金|飛角歩歩 27手 平正利 近代将棋1997年3月
- 31金33金|11玉13金23金|飛角 7手 小林健二 東奥日報1997年9月
- |11玉33金44金45金46金|飛飛角銀 17手 長谷繁蔵 詰パラ1999年3月
- 13金14金|11玉21金24金|角桂桂歩 29手 河原林隆彦 詰パラ2003年1月
- 34金44金|11玉24金42金|飛飛角 21手 妻木貴雄 近代将棋2005年12月
- 17金33金|11玉12金43金|飛飛桂桂 21手 新田道雄 詰パラ2009年12月
初形曲詰と比べて自由度が高いせいか、手数の長い作品が多く、無防備から無仕掛けまでバラエティに富んでいる。この感じなら、金を置くマスの範囲を制限しても、案外おもしろい詰将棋が見つかるのではないだろうか。
4) 11玉の金一色図式を探す: 最初は3×3の中で
駒位置の組み合わせだけなら、それほど多くないが、詰方・受方の組み合わせ、持駒の組み合わせまで考えると、相当時間がかかりそうだ。どのくらいかかるものか確かめる意味で、最小に近い3×3の範囲内に金4枚配置してみた。持駒は5枚以内とした。
玉が11にいるので、金の置ける位置は8か所。そのうちから4つのマスを選択する方法は、(8×7×6×5)/(4×3×2×1)=70通り。金の向きで、×2の4乗で1120通り。実際には12、21、22には詰方の金は置けないので若干減るが、最大この回数持駒サーチをすれば完了することになる。
単に余詰がないというだけだと、大量の完全作候補が出力されそうなので、15手以上のものだけ出力するようにしてみた。
実際に実行させてみたところ、約13時間で完了、18作の完全作候補が出力された。
その中で、41手という長手数の図が二つあった。
- 31金33金|11玉22金32金|飛飛歩 41手
- 13金31金|11玉12金22金|飛飛歩 41手
手順はほぼ同じで、22金、同金、21金打、同金、同金、同玉で、岡田秋葭の裸玉になる。新作として発表することはできないが、おもしろい発見。
5) 探索範囲を4×4に拡大してみる
3×3の完全作候補が今一つだったので、探索範囲を4×4に拡大することを考えた。しかし、3×3の70通りが4×4だと(15×14×13×12)/(4×3×2×1)=1365通り。そのままでは20倍ぐらい時間がかかりそう。そこで、持駒サーチの範囲を持駒も一色に限定することにした。
実行したところ、15手以上の完全作候補が43作。その中で20手以上の図が一つだけあった。
- 32金43金44金|11玉14金|銀3 25手
手順はそこそこ見られそうなので、先日のたま研の新年会で、伝説の四銀詰、四金詰の作者Sさんに見ていただいたら、即座に詰めて「14は金でなくてもいいので金一色図式としてはちょっと・・・」とのこと。変同や非限定もあって、残念ながらこれもボツ。
6) 探索範囲を更に5×5に拡大してみる
ちょっと無謀な気もしたが、途中で良さそうな図が出てきたら打ち切ればいいや、と脳天気に考えて、5×5にも挑戦してみた。また4×4で持駒1種はあまりおもしろい手順がでてこなかったので、持駒2種までにしてみることにした。
5×5-1から4マスを選ぶ組み合わせは(24×23×22×21)/(4×3×2×1)=10626通り。これはいくらなんでも無理そうなので、無防備に限定することにした。これなら12、21、22には置けないので、(21×20×19×18)/(4×3×2×1)=5985通り。向きの組み合わせがないので、1回の持駒サーチの時間が増えても何とかなりそう?
事前の見積もりは重要だが、実際やってみると的ハズレのこともよくあるので、試行錯誤しながらやっていくしかない。
7) メモリ不足で終了できず
実行してみると、全体の7割ぐらいまで進んだところで、Wndowsからメモリ不足の警告メッセージが。タスクマネージャで見てみると、少しずつメモリの使用量があがっているようだ。各プロセスのメモリ使用量は目立った増加はないので、キャッシュでの使用? それなら不足しているように見えても問題ないはずだし、警告メッセージもでないよなあ。昔使っていたパソコンも引っ張り出してきて実行させているのだが、WindowsXPやWindows7では発生していないので、Windows8の問題だろうか。
警告を無視していたら、ついに柿木将棋がメモリ不足になってしまったので、やむなく中断。
8) きれいな形の詰将棋が見つかった
幸いなことに中断する前に一つきれいな形の図が見つかったので、これを今回の作品とすることにする。
詰将棋創作プログラミング 作品3 eureka
- 25金35金52金53金|11玉|香香歩6 31手
頭に中別れの変同があるが、この形にこの持駒で詰将棋として成立しているのはおもしろいと思う。
30手以上の図はほかにもあったが、金3枚だけで詰んでしまったりして今一つ。
今回は駒位置サーチの開発と持駒サーチと組み合わせたときの実行時間の感覚をつかむのが目的だったので、とりあえず、この辺で満足しておこう。
完全作候補がたくさんでてきたので、せっかくだからもう一つ。
詰将棋創作プログラミング 作品4 eureka
- 35金41金44金45金|11玉|角角香 27手
あまり美しくない形だが、飛び道具だけの持駒で、案外読みにくい。
| 固定リンク
「コンピュータ詰将棋」カテゴリの記事
- 詰将棋創作プログラミング 26 同一作リストの分析(2019.03.27)
- 詰将棋創作プログラミング 25 記録に挑戦!(2018.08.30)
- 詰将棋創作プログラミング 24 飛角図式のランダム生成(2018.01.22)
- 詰将棋創作プログラミング 23 柿木将棋自動化の効果(2017.01.22)
- 詰将棋創作プログラミング 22 詰将棋創作AIを作るには(2017.01.17)
コメント