「詰将棋もどきを自動生成してみる」の見出し画像

詰将棋もどきを自動生成してみる

=fkvrd-yxus
4分で読めます 2026/01/23
151
3

概要


pythonで詰将棋もどきを生成するプログラムを実行した結果です。

正確には、不要駒がほぼなくて、詰むことが確定している局面(厳密な詰将棋ではない)を生成するシステム。
現在はあくまで詰将棋の原石を探す"ふるい"くらいの完成度です。
 
まずは、軽く調べた範囲での詰将棋生成に関するwebページを紹介。
 
#1.指定範囲にランダム配置して詰んだ局面
 
#2.実戦から詰み局面を作り、不要駒を消して逆算
 
私は#1のアプローチで、手数的には脊尾詰で0.3秒で解ける範囲(少なくとも31手まではいける模様)。
また#1は不要駒があるので、それをバリデーションする工程も入れています。
 
初期条件:(ランダム)
- 右上 3×3以内
- 双玉あり
- 初形 3枚以内
- 先手持ち駒 0~2枚
 
上記を生成したデータの分析結果。
 
--- 以下はデータをgemini3-flashに丸投げ
 
1. 基本統計量 (Descriptive Statistics)データセット全体の傾向を示す数値です。
 
データ数 (count): 1,000 件
平均値 (mean): 2.506
手標準偏差 (std): 2.695
最小値 (min): 1 手
最大値 (max): 31 手
最頻値 (Mode): 1 手
 
2. 手数ごとの分布詳細 (Histogram Data)グラフから読み取れる、各手数ごとの問題数内訳です。
 
手数 (Steps)問題数 (Count)
1手詰563件 (全体の半分以上)
3手詰277件
5手詰100件
7手詰33件
9手詰9件
11手詰3件
13手詰7件
15, 17, 19手詰各 1件
21手詰2件
23, 29, 31手詰各 1件
 
3. データの傾向分析
極端な右裾引き分布: 1手詰が圧倒的に多く(563件)、
手数が長くなるほど急激に件数が減少しています。
外れ値: 最大31手という非常に長い問題も1件含まれていますが、全体の75%は3手以内に収まっています。
---
とのことです。
 
想像通りですが、ランダム生成した局面が詰む場合、短い手数ほど多いということになりました。
今回の初期条件だと13手と15手の間に壁があるように見えますね。
 
参考:
コンピュータによる詰将棋創作(詰将棋メモ)

コメント(3)

Coughing @oljjuautwb
2026/01/23 19:52
全自動で闇雲に作らせるだけだと面白いものを生み出すのはなかなか難しそうな気はします。
煙詰や曲詰みたいに詰め上がりの配置を決めて、そこから逆算させる方が当面はいいのではないかと。
自然言語処理と組み合わせて、「◯◯のテーマで作りたいんだけど良い構図ない?」みたいなオーダーに応えてもらえるようになると面白くなりそうな気がします。

justice @kxx1edkrs4
2026/01/23 20:56
To: Coughing さん
面白いものを生み出すのは人間の特権ということにしたいですが笑。
まずは詰将棋に特化した知識をファインチューニングする必要はありそうですね。

Coughing @oljjuautwb
2026/01/23 21:02
To: justice さん
人間の想像力も小さな枠に囚われてることがあるので、ソフトやAIの力で新しいものを見出すのも悪くないかなと思ったり(笑)

コメントの投稿