RensaYomi1クラスで実装されているAI-COMロジックについて,説明する. 優先順位とルール
ルール3以外は,KaidanTumi2と同じ.ルール3を,連鎖を読む試みとして今回追加した.
各ルールの意味ルール3以外については, アルゴリズム(KaidanTumi2)を参照すべし.3.発火候補点で発火したと仮定したときに生じる連鎖数連鎖をいかにして伸ばすかということでひねり出したのが,発火候補点という概念です.
発火候補点とは以下の条件を満たしている箇所を,発火候補点と呼ぶことにします.
そして積みを置いた状態で発火候補点が消えたときに,連鎖が発生するかどうかを評価します.
発火候補点の検索発火候補点は空白に隣接しているという条件があるため,以下に示すような空白に隣接しているセルから検索を行い,見つける.
評価 (発火候補ごと)◎◎ が,評価関数を求めようとしている積みだとする.発火候補点は,青×2と緑の計3箇所あるので,それぞれが消えた状態をシミュレートする. (A〜Cとする)
このそれぞれの結果からさらに,発生連鎖数を求めると,
となります.Aが3連鎖というのは,見ての通り.赤,青,緑の3連鎖です.
評価 (合計)下表のように,2 ^ (発生連鎖数) の総和を取ります.ただし発生連鎖数=0の場合は,0とします. (2 ^ 0 = 1だが,1にはしない)
これにより,
場合にルールとして高い評価になるはずです. ※ なお,ここでいう「多面的」はあまり使われない言葉だと思うが,「リバーシブル」なんかがこれに含まれると思う.
総括ますます強くなった.勝てんわ. しかし,相変わらず大連鎖(7連鎖以上)は作れないし,納得できない積みも多く見られる.改良点としては,発火候補点を消した後に「連鎖ができる」ということだけではなく,「連鎖に近づいた」という評価も入れるべきだと考えている. 連鎖が起きる(=4個以上連結)だけではなく,3個連結でも評価すると. そうすると,連鎖尾の形成が促進されそうな気がする. |