尼姆变异游戏策略-StoneGameStrategist-SRM309

Strategy for a Nim variation game - StoneGameStrategist - SRM 309

本文关键字:策略 -StoneGameStrategist-SRM309 游戏 变异      更新时间:2023-10-16

我对博弈论还很陌生,只了解正常的尼姆游戏,在这种游戏中,你可以在没有条件的情况下从堆里移除石头,最后一个移除石头的玩家获胜。但后来我在阅读Topcoder上的博弈论教程时遇到了一个好问题。要点如下:

你和一个朋友正在玩一个游戏,你轮流从成堆的石头中取出石头。最初,每个桩的石头数量至少与左边的桩一样多。此属性必须在整个游戏过程中保持。每转一圈,从一堆石头中取出一块或多块石头。你和你的朋友轮流转弯,直到无法做出有效的动作。最后一个出手的玩家赢得了比赛。请注意,如果从一堆石头中移除所有石头,它仍然被视为一堆。如果你做出了"获胜的举动",那么无论你的朋友做什么,你最终都能获胜,那么你就被认为是做出了"胜利的举动"。你会得到一个int[]桩,从左到右代表每一桩中的石头数量。该你动了。找到一个获胜的动作,并将其作为字符串返回,格式为"TAKE s STONES FROM PILE k"(仅为清晰起见,引号),其中s和k(一个基于0的索引)都是没有前导零的整数。如果有多个获胜动作,请选择使s最小化的一个。如果仍有平局,请选择将k最小化的那个。如果没有获胜动作,则返回字符串"YOU LOSE"(仅为清晰起见,引号)。

这里的石头移除有一个条件,即你需要保持整体的非递减顺序,这正成为我制定逻辑的障碍。我试着阅读了这篇社论,但不幸的是,我无法理解它背后的想法。有人能用更简单的术语解释解决方案吗?

社论没有解释如何解决尼姆的原始游戏,只提供了维基百科页面的链接(在那里可以找到解决方案)。

这篇社论只是解释了如何将Topcoder问题映射到Nim:的常规游戏中

首先,游戏可以转换为桩与原始桩之间存在差异的游戏(因此3 6 6的示例变成3 3 0)。

然后桩的顺序颠倒(因此示例变为0 3 3)。

然后,这个新游戏中的一个动作变成了一个分两步的过程:从一堆石头中取出石头,并将其添加到上一堆(在本例中,获胜的动作从最后一堆石头取3,并将它们添加到中间一堆石头,变为0 6 0)。

然后,如果你只看奇数桩(#1、#3、#5等),你就得到了尼姆的常规游戏,并且可以在上面应用一个有记录的算法(所以0 3 3与尼姆的0 3位置相同)。

因此,给出的解释是:

  • 在奇数堆上的任何移动都会像尼姆正常游戏中的移动一样
  • 在偶数桩上的任何移动都可以通过将相同数量的石头从接收的奇数桩移动到下一个偶数桩来否定(因此可以再次将相同的失败位置强加给玩家)