用 Python 查找赢得 Lotus 和 Caterpillar 游戏所需的预期移动次数的程序

假设我们有一个 n 行 m 列的网格。Amal 和 Bimal 正在那个网格上玩游戏。游戏规则如下 -

Amal 将白莲花瓷砖放在顶行的某处,而 Bimal 则在底行某处放置了一块毛毛虫瓷砖。Amal 开始游戏,他们交替进行。Amal 可以将他的瓷砖移动到当前单元格内的 8 个相邻单元格中的任何一个,但 Bimal 的毛毛虫瓷砖只能在网格内向左或向右移动,或停留在同一位置。Amal 的目标是使用尽可能少的动作抓住 Bimal,而 Bimal(使用毛毛虫瓷砖)必须尽可能长时间地生存。如果他们随机选择两列来放置他们的莲花和毛毛虫,那么我们必须找到 Amal 赢得这场比赛所需的预期移动次数。

因此,如果输入类似于 n = 5 m = 7,那么输出将是 4.571428571428571。

示例

让我们看看以下实现以获得更好的理解 -

def solve(n, m):
   r = 0

   for l in range(m):
      temp = n - 1.0
      if l >= n:
         temp += (l - n + 1) * ((l - 1) / m)
      if l < m - n:
         temp += (m - n - l) * ((m - l - 2) / m)
      r += temp / m

   return r

n = 5
m = 7
print(solve(n, m))

输入

5, 7
输出结果
4.571428571428571

猜你喜欢