RensaYomi1クラスで実装されているAI-COMロジックについて,説明する.


優先順位とルール

  • 1.窒息しないこと
  • 2.危機になるまで連鎖を発火しないこと
  • 3.発火候補点で発火したと仮定したときに生じる連鎖数
  • 4.同色連結個数の多さ
  • 5.同じ列に存在する同色個数
  • 6.隣接行の下方に存在する同色個数
  • 7.できるだけ下に置く

ルール3以外は,KaidanTumi2と同じ.ルール3を,連鎖を読む試みとして今回追加した.


各ルールの意味

ルール3以外については, アルゴリズム(KaidanTumi2)を参照すべし.

3.発火候補点で発火したと仮定したときに生じる連鎖数

連鎖をいかにして伸ばすかということでひねり出したのが,発火候補点という概念です.

発火候補点とは

以下の条件を満たしている箇所を,発火候補点と呼ぶことにします.
  • 3個以上連結している
  • 上右左のいずれかが空白である (積みの到達可能位置である)

そして積みを置いた状態で発火候補点が消えたときに,連鎖が発生するかどうかを評価します.

発火候補点の検索

発火候補点は空白に隣接しているという条件があるため,以下に示すような空白に隣接しているセルから検索を行い,見つける.

評価 (発火候補ごと)

が,評価関数を求めようとしている積みだとする.発火候補点は,青×2と緑の計3箇所あるので,それぞれが消えた状態をシミュレートする. (A〜Cとする)

消去前

消去後(A)

消去後(B)

消去後(C)

このそれぞれの結果からさらに,発生連鎖数を求めると,

発火候補点発火連鎖数
A3
B0
C0

となります.Aが3連鎖というのは,見ての通り.赤,青,緑の3連鎖です.

評価 (合計)

下表のように,2 ^ (発生連鎖数) の総和を取ります.ただし発生連鎖数=0の場合は,0とします. (2 ^ 0 = 1だが,1にはしない)

発火候補点発火連鎖数2 ^ (発生連鎖数)
A39
B00
C00
合計9

これにより,

  • 大連鎖が誘発される
  • 連鎖の発火点が多面的である

場合にルールとして高い評価になるはずです.

※ なお,ここでいう「多面的」はあまり使われない言葉だと思うが,「リバーシブル」なんかがこれに含まれると思う.


総括

ますます強くなった.勝てんわ. しかし,相変わらず大連鎖(7連鎖以上)は作れないし,納得できない積みも多く見られる.

改良点としては,発火候補点を消した後に「連鎖ができる」ということだけではなく,「連鎖に近づいた」という評価も入れるべきだと考えている.

連鎖が起きる(=4個以上連結)だけではなく,3個連結でも評価すると.

そうすると,連鎖尾の形成が促進されそうな気がする.

kamolandをフォローしましょう


© 2017 KMIソフトウェア