詰将棋創作プログラミング 4 初形曲詰を作る
[2014年1月18日最終更新]
詰将棋創作プログラミング 4 初形曲詰を作る
1) 曲詰とは
曲詰とは、詰将棋の図面や詰上りの図面を使って、文字、図形、絵などを描いた詰将棋である。最初の図面で描く初形曲詰(盤面曲詰)、詰上りで描くあぶり出し、最初と詰上りの両方で描く立体曲詰が(途中の局面も使った三段曲詰なども)ある。
年賀詰では、年号や干支などを表現する曲詰が良く作られる。2014年年賀詰展示室を見ると、いろいろなタイプの曲詰が登場しているのが分かる。
初形曲詰とあぶり出しでは創作の手法が異なるので、まずは持駒サーチが活用できそうな初形曲詰を考えてみよう。
2) すべての盤駒が決まっていれば持駒サーチだけで作図できる
曲詰であるから、描く形を考え、どのマスに駒を配置するのかを決める。ドット絵を描く要領だが、9×9しかないので、複雑な形は難しい。よく作られているのは、数字やカタカナ、アルファベットなどシンプルな形の文字である。
この段階では、配置するマスが決まっただけで、玉をその中でどのマスに置くか、他のマスに詰方または受方のどの駒を置くか、かなりの自由度がある。
しかし、何らかの方法で置く駒を決めれば、持駒サーチで詰将棋として成立する持駒を調べるだけで作ることができる。
例えば、正月だから「1」、中央がきれいだから配置するマスは53から57、となれば玉はやっぱり55だよね。どうせなら配置する駒は銀4枚とかでどうだろう。逃げられないように53銀、57銀は詰方で、それなら54銀、56銀は受方で。
とか都合よい思考で人間が決めてやれば、持駒サーチにかけられる。さっそくやってみよう。とりあえず持駒4枚以内でと・・・
結果は完全作候補なし! やっぱり、そううまくはいかないものだ。
3) 置き駒サーチのプログラム
駒を置くマスを指定して、いろいろな駒をそこに置くプログラムを作れば、持駒サーチと組み合わせることで、原理的にはその形の初形曲詰が全検できる。「原理的には」と書いたのは、例によって単純な全検では実用的な時間内に終わらないからだ。
詰将棋の創作とは、膨大な盤駒・持駒の組み合わせの中から、詰将棋として成立し、かつ人間の鑑賞に堪えうる組み合わせを探し出すことだ。ランダムな組み合わせで偶然ヒットする確率は非常に低い。したがって、コンピュータにかける以前に、実用的な時間内で完了する組み合わせ数で、かつ、その中に宝が埋まっていそうな条件を人間の知恵で設定してあげる必要がある。
初形曲詰は、ある意味初形曲詰であるだけでそれなりの価値があるが、更に飛角図式、一色図式など使用駒の趣向を加えれば価値が高まる。しかし、余り限定しすぎると、前述のように時間の無駄遣いに終わることになる。
4) 既存の作品を調査して、宝の埋まっている可能性を探る
実用的な時間内に終わらせることを考えると、置くマスが少ない曲詰が望ましい、その観点から「1」「一」「/」の3つ(いずれも中央で5マスとする)を候補にあげてみた。詰将棋データベースなどで、既存の作品を調べてみると、いずれもそれほど多くの作品はないことがわかった(同一作の発表は除く)。
初形曲詰「1」(53-57)
53 54 55 56 57 持駒 手数 作者 発表
馬 v龍 v玉 v龍 馬 金4 11手詰 伊藤六男 将棋月報1943/3
角 v桂 v玉 v馬 銀 金4 9手詰 山田修司 詰パラ増刊号1956/4
v玉 v金 角 飛 桂 金金歩 17手詰 佐藤宗弥 詰パラ1993/6
飛 角 v玉 角 飛 なし 13手詰 平山達 詰棋めいと1996/10 余詰
銀 銀 v玉 v銀 銀 角角金桂 13手詰 柴田三津雄 将棋世界2009/2
角 v金 v玉 v銀 飛 角銀銀桂 29手詰 田中孝海 詰パラ2010/1
v金 v玉 v金 龍 馬 香3歩3 37手詰 相馬康幸 詰マニ2010/1
初形曲詰「一」(75-35)
75 65 55 45 35 持駒 手数 作者 発表
馬 v龍 v玉 v龍 馬 金3歩 11手詰 不明 詰パラ1950/4 余詰
角 v銀 v玉 v銀 角 飛金 11手詰 豊田隆一 詰パラ増刊号1956/4
角 v龍 v玉 銀 香 角金 5手詰 今一桂 詰パラ1964/1
飛 桂 v玉 v龍 角 金金銀 11手詰 田中至 詰パラ1967/7
角 v龍 v玉 v龍 角 金4 7手詰 M・A 詰パラ1971/4
馬 v銀 v玉 v銀 龍 角 35手詰 伊藤一幸 詰パラ1976/3 余詰
銀 銀 v玉 銀 銀 なし 1手詰 はぎ原博 詰パラ1982/1
角 v歩 v玉 v歩 馬 香香歩4 31手詰 北原義治 近代将棋1985/2
銀 v歩 v玉 v歩 銀 飛銀桂歩4 35手詰 相馬康幸 詰マニ2010/1(おもちゃ箱2004/1)
馬 v飛 v玉 v飛 馬 桂香香歩 27手詰 TETSU おもちゃ箱2007/1
初形曲詰「/」(77-33)
77 66 55 44 33 持駒 手数 作者 発表
角 龍 v金 v玉 金 なし 13手詰 丸山正為 将棋イロハ字圖 余詰
飛 v玉 飛 馬 v角 銀 3手詰 坂口昇造 将棋世界1956/12 (左右逆)
飛 v玉 飛 角 v角 銀 3手詰 菊池賢治 詰パラ1970/9
金 香 v玉 飛 馬 なし 5手詰 伊藤果 東京スポーツ1983/2
v飛 香 v玉 飛 角 角 3手詰 山本進 近代将棋1990/10
この3つを見ると、「/」がほとんど開拓されてなく、まだ宝が埋まっているような感じがした。
5) 初形曲詰「/」の置き駒サーチプログラムを作る
そこで、置き駒サーチのテンプレートとして、まずは初形曲詰「/」の置き駒サーチプログラムを作ろうと思った。
しかし、たった5マスでも、各マスに置ける駒の種類は自駒敵駒、成生があるのでかなり多く、生成した組み合わせで持駒サーチすることを考えると、まだまだ組み合わせを減らさなければならない。
組み合わせを減らす、かつ価値をあげることを考え、玉は55限定、置く駒は飛角4枚(飛角図式)の範囲でサーチすることにした。また、持駒サーチの方も持駒3枚まで、解図時間上限10秒と、軽い範囲に抑えた。
組み合わせを生成するときの留意点は、最初から王手のかかっている局面は除けるということ。55玉型なので、44と66には詰方の龍、角、馬はおけないわけだ。
6) 実際に初形曲詰「/」を作ってみる
プログラムを開発し、実行させてみたら、実行時間がほぼまる1日。やはり、二つのサーチを重ねるとかなり時間がかかる。実行結果として、23個の完全作候補が出力された。
ほとんどは短手数のつまらない詰将棋だったが、19手の図が見つかった。
詰将棋創作プログラミング 作品2 eureka
- 33角66飛|44馬55玉77飛|金銀桂 19手
びっくりするような手順ではないが、捨て駒も入り、詰将棋として一応できている。図の77飛はなくてもいいようだが、これは7段目の桂打ちを防いでいるので、除くと早詰が発生する。
なお、詰将棋創作プログラミングで創作した作品は、そのことがわかるように今後作者名を「eureka」とすることにした。
もう一つ19手の図があった。
- 44飛77馬|33飛55玉66馬|金銀銀
こちらは33飛がなくても成立する(33飛は飾り駒)ので、33飛を省くべきだが、そうすると、ちょっと中途半端な感じ。
かなりサーチの範囲を狭くしているので、とりあえずは詰将棋として成立する図が見つかったことで満足すべきだろう。
7) さて、次は
持駒サーチ、置き駒サーチは目途がたってきたので、次は駒位置サーチを作ってみようかと思っている。これは、配置する駒の集合と、盤面の中で配置する範囲を指定して、全部の組み合わせを生成するもの。例えば、一番簡単な玉1枚だけで配置する範囲は11から59の45か所とすれば、裸玉の全検ができるわけだ。
これらの各種サーチのパラメタを盤面でうまく表現できればよいのだが(将棋図面の正規表現みたいなもの?)。
| 固定リンク
「コンピュータ詰将棋」カテゴリの記事
- 詰将棋創作プログラミング 26 同一作リストの分析(2019.03.27)
- 詰将棋創作プログラミング 25 記録に挑戦!(2018.08.30)
- 詰将棋創作プログラミング 24 飛角図式のランダム生成(2018.01.22)
- 詰将棋創作プログラミング 23 柿木将棋自動化の効果(2017.01.22)
- 詰将棋創作プログラミング 22 詰将棋創作AIを作るには(2017.01.17)
コメント