Nim Challenge 游戏
2016-08-23
0 0 0
暂无评分
其他
如何获取积分?
翻译 maninwest@Codeforge 作者:Giannakakis Kostas@CodeProject
Nim 是个策略游戏,两个玩家轮流从不同的堆中移除对象。一个玩家可以移除任何数量的项目,只要它们都来自相同的堆且出现在相连的位置。移走所有堆中最后一个项目的玩家赢。
相信很多人玩过这个游戏,也许有人认为这不过是碰运气的游戏。但是该游戏有个算法,如果正确运用的话,可以让一个玩家总是赢。Nim Challenge 是个 Android 应用程序,它实现了这个 "赢家战略" ,挑战玩家在不同的情景下和有限时间内对战略的应用。
赢家战略
考虑这样一种情况:3 个堆,大小分别是 1, 2 和 3 的排列
|
| |
| | |
这种排列可以表示为:
1 = 0012
2 = 0102
3 = 0112
---
Sum: 000
Nim 是个策略游戏,两个玩家轮流从不同的堆中移除对象。一个玩家可以移除任何数量的项目,只要它们都来自相同的堆且出现在相连的位置。移走所有堆中最后一个项目的玩家赢。
相信很多人玩过这个游戏,也许有人认为这不过是碰运气的游戏。但是该游戏有个算法,如果正确运用的话,可以让一个玩家总是赢。Nim Challenge 是个 Android 应用程序,它实现了这个 "赢家战略" ,挑战玩家在不同的情景下和有限时间内对战略的应用。
赢家战略
考虑这样一种情况:3 个堆,大小分别是 1, 2 和 3 的排列
|
| |
| | |
这种排列可以表示为:
1 = 0012
2 = 0102
3 = 0112
---
Sum: 000
数每一行元素的个数,转化成二进制表示(1 和 0)。在每一列,数 1 的数量。如果结果是奇数,则对应的列在Sum中是 1/如果是偶数,则是 0.
如果 Sum 都是 0,则第一个玩的人会输。如果Sum 中有一个 1, 第一个玩家总能找到一步,让自己获胜。
上述算法假设最后一个移除项目的人赢。但是这个游戏也常常让最后一个玩家输,这就是所谓的 "misère " 游戏,在一个"misère " 游戏中,可以应用相同的算法,不同的是当大小为 1 的堆剩下时的情景。在这种情java
游戏
相关源码推荐
使用Java开发Android AOA Android开放式附件
0
0
暂无评分
VPN源码加速器
0
0
暂无评分
VPN源码
0
0
暂无评分
springboot校园招聘系统
0
0
暂无评分
java智能二维码门禁管理系统
0
0
暂无评分
暂无评论