« 詰将棋メモ(2014年1月17日) | トップページ | 詰将棋メモ(2014年1月18日) »

詰将棋創作プログラミング 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手の図が見つかった。

Tst002 詰将棋創作プログラミング 作品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か所とすれば、裸玉の全検ができるわけだ。

これらの各種サーチのパラメタを盤面でうまく表現できればよいのだが(将棋図面の正規表現みたいなもの?)。

|

« 詰将棋メモ(2014年1月17日) | トップページ | 詰将棋メモ(2014年1月18日) »

コンピュータ詰将棋」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック


この記事へのトラックバック一覧です: 詰将棋創作プログラミング 4 初形曲詰を作る:

« 詰将棋メモ(2014年1月17日) | トップページ | 詰将棋メモ(2014年1月18日) »