1手詰みメモ
参考:
- Bonanzaの高速一手詰め - ym将棋
- Bonanza雑感その3 - コンピュータ将棋Selene開発日記
- 将棋ファン向け : 利きの逆算について - 2009-12-20 - Bonanzaソース完全解析ブログ
- Bonanzaの1手詰み判定関数はどういう処理をしているのか - 2009-12-02 - Bonanzaソース完全解析ブログ
- かずの心の贅肉 1手詰判定関数の未解決局面(?)
- かずの心の贅肉 1手詰判定関数の作成中(テスト問題集あり)
打ち直接王手
- ある地点に駒を打って王手して、それが取られるなら、そこには何を打っても詰まない
- 持ち駒の種類が増えたときに、少しだけ処理を省ける
- 玉が移動できる場所がある場合、駒打により全ての移動可能箇所が消えない限り詰まない(当たり前)
- 例:玉が下に移動可能な局面では、銀打・角打・桂打では絶対に詰まない
- 両王手がなければ、銀不成・角不成でも詰まない
- 例:玉の横が空いている場合、角打・桂打・香打、逆側への金打・銀打では詰まない
- この場合、飛車を打って詰むのは王の横(逆側)に打つときのみ
- 例:玉が下に移動可能な局面では、銀打・角打・桂打では絶対に詰まない
持ち駒の種類が多い場合は、玉の近傍を調べて打てる箇所を減らした方が儲かるかも?(要検証)
移動直接王手
- 玉頭への歩成・歩不成・香不成の直接王手は両王手にならない
- ある地点に駒を打って詰まないなら、同種の駒をそこに移動しても詰まない(場合がある)
- これが成り立たないのは、移動により玉近傍の飛び利き利きが増える場合(両王手含む)
- 利きが増えない場合を低いコストで判断できるか? 利き情報があればまだしも……
- 金打ちで不詰み&歩移動の場合
- 飛車あるいは金を打って詰まなかったなら、駒を取らない歩突きでは詰まない、はず
- 金を打って詰まなかったなら、駒を取らない玉頭への歩成では詰まない、はず
- これが成り立たないのは、移動により玉近傍の飛び利き利きが増える場合(両王手含む)
打直接王手→移動直接王手の順に処理しているなら
- 移動直接王手により玉近傍の飛び利き利きが増えないなら
- 空所への移動王手は、持ち駒に同種の駒が無いときだけ処理すれば良い
- 玉の上3箇所に限り、持ち駒に金があれば銀移動でも詰まない
- 尻銀は持ち駒に角銀がないときのみ
- 尻金は持ち駒に飛車がないときのみ
- 空所への移動王手は、持ち駒に同種の駒が無いときだけ処理すれば良い
移動により利きが変化するのが面倒臭い。持ち駒の種類によって場合分けする手はありそうだが……