资 源 简 介
翻译 maninwest@Codeforge 作者:Giannakakis Kostas@CodeProjectNim 是个策略游戏,两个玩家轮流从不同的堆中移除对象。一个玩家可以移除任何数量的项目,只要它们都来自相同的堆且出现在相连的位置。移走所有堆中最后一个项目的玩家赢。相信很多人玩过这个游戏,也许有人认为这不过是碰运气的游戏。但是该游戏有个算法,如果正确运用的话,可以让一个玩家总是赢。Nim Challenge 是个 Android 应用程序,它实现了这个 "赢家战略" ,挑战玩家在不同的情景下和有限时间内对战略的应用。赢家战略考虑这样一种情况:3 个堆,大小分别是 1, 2 和 3 的排列 | | | | | |这种排列可以表示为:1 = 00122 = 01023 = 0112 ---Sum: 000数每一行元素的个数,转化成二进制表示(1 和 0)。在每一列,数 1 的数量。如果结果是奇数,则对应的列在Sum中是 1/如果是偶数,则是 0.如果 Sum 都是 0,则第一个玩的人会输。如果Sum 中有一个 1, 第一个玩家总能找到一步,让自己获胜。上述算法假设最后一个移除项目的人赢。但是这个游戏也常常让最后一个玩家输,这就是所谓的 "misère " 游戏,在一个"misère " 游戏中,可以应用相同的算法,不同的是当大小为 1 的堆剩下时的情景。在这种情