ゲームAI備忘録

ゲームAIに使えそうな知識を備忘録として書き留める

人助けと思って何卒インストールをば! 詰碁/ アルコネ/ 五目並べ

SRM598 II H

解法

(a). mov1 >= d (先手が仕留められる距離)

  • Ciel勝利

(b). mov1 < d かつ mov2 < d のとき(お互い十分距離が離れているとき)

  • (1). 2*mov1 < mov2 => Liss (Liss は攻撃できるがCielは攻撃できない位置に移動できるため)
  • (2). mov1 > 2*mov2 => Ciel (b.1 の逆パターン)
  • (3). otherwise => Draw (両方共近づくとやられるパターン)

(c). mov1 < d かつ mov2 >= d のとき(Cielが逃げるしかないパターン)

  • (1). mov1 + d <= mov2 => Liss (Ciel が逃げても無駄)
  • (2). mov1 + d > mov2 => Cielが逃げれば(b)に帰着

コード

class FoxAndFencingEasy {
public:
	string WhoCanWin(int mov1, int mov2, int d) {
		if (mov1 > min(2*mov2, d-1)) return "Ciel";
		if (min(2*mov1, mov1+d-1) < mov2) return "Liss";
		return "Draw";
	}
}