神机妙算
神机妙算
小学的时候,在一位好友的家里一起看了一本数学书,在里面我们学到了一个游戏-神机妙算。
不得不说,这确实一个有趣的游戏,以至于我们在中学阶段依旧在玩,而且还教会更多的人学会这个游戏,其乐无穷也。
对了,这本书叫《天哪!数学原来可以这样学》,在第三章中的第30节可以找到这个游戏。
规则
由两名玩家参与,各自在纸上写下自己的key,注意不能让对方看到,key由三个数字组成,在1-9中选择,不能重复。
互相猜对方的key,每回合各攻守一次,攻方猜时报出三个数字(在0-9中选择,不能重复,顺序自定),守方根据攻方报出的数字与自己的key对比,当有一个数字被猜中,但是位置不对时,称为“一击”;当有一个数字被猜中,而且位置正确时,称为“一命”。
例如,守方的key为“123”,攻方报出数字“142”,此时守方应回答“一命一击”,攻守转换,进行猜测,一回合结束。
直到某回合功方完全猜中守方的key,若攻方为先手方,守方有一次追平的机会进行进攻;若攻方为后手方,游戏结束,攻方胜利。
注 此处的规则与书中所描述的规则略有不同。
计划
制作系列动画视频。
P1 游戏规则介绍
P2 游戏玩法拓展
P3 微信小程序开发
P4 AI对抗算法
拓展
1 猜的数字可以用“0”补位
2 数字可以增加“0”
3 数字允许重复
4 key改为由四个数字组成
可能
第一轮猜测有如下可能(用“v”表示命中,用“o”表示击中)
vvv 三命
voo 一命两击
ooo 三击
vv 两命
vo 一命一击
oo 两击
v一命
o 一击
Ø 空
算法1
在此用自然语言(就是自己瞎说)表示算法。
key 123
进攻算法
vvv 三命
直接获胜
voo 一命两击
① 132/321/213 调换1、2/1、3/2、3位
② vvv 123 Win!
② ooo 312 定一动一
③ oo 21x
③ vo 1x2
④ vvv 123 Win!
ooo 三击
① 312/231 定一动一
② oo 21x
② vo 1x2
③ vvv 123 Win!
vv 两命
vo 一命一击
oo 两击
v一命
o 一击
Ø 空
另猜3个数字
算法2
用C语言表示算法。
初步判断程序
1 |
|