算盘棋

前言:

我稍微搜索了一下这个民间游戏,并没有找到叫什么,我就称之为算盘棋吧。

倒是搜到了别的地方也有几种类似的算盘博弈游戏,不过规则都不一样。

说实话算盘棋的研究意义并不大,不过出于情怀,还是把童年的游戏研究研究吧,其他类似的游戏就算了,程序员的乐趣就是这么简单而枯燥。

 

1,算盘棋规则

(1)开局

开局双方各10颗子,如图,靠近分割线的是活子,远离分割线的则不是。

我用上方来表示执上面的2行的一方,用下方表示执下面的5行的一方。

单列容量表示一列最多多少颗子,上方的单列容量是2,下方是单列容量是5

(2)行棋

上方是先手,双方轮流行棋,每次可以把一列棋子中的若干个移到左边相邻的这一列,最少移动一颗,最多移动到使左边相邻列满。

(3)攻击

当一方行棋,把第n列的若干棋子移到第n-1列,如果第n-1列原本有对方的棋子,那么这些棋子被行棋方杀死。

(4)胜负

谁的子全部被杀死,谁就输了。

 

2,基本攻略——占领可行域

(1)尽量往前冲

如果经过20个回合,变成这种局面:

那么很明显,再过2个回合,上方就会少一颗子。

换句话说,到了这个局面,下方已经有明显的必胜策略了。

上方要想避免这种情况,就必须要让一些子先尽量往前冲,占据更多的可行域。

上方有因为可行域而损失子的危险,但下方没有。

但下方为了挤压上方的可行域,也应该尽量占据更多的可行域。

(2)相遇时按兵不动

如果出现这种情况:

轮到上方走,上方不应该把第8列的棋子移到第9列干掉下方的棋子,而应该按兵不动,这样才能占据更多的可行域。

同样的,上方在这种局面也会按兵不动。

(3)单子冲锋

为了在遇到上图所示的相遇场景时,能够按兵不动,不至于损失可行域,此时的最前方一列必须是一颗子。

也就是说,无论上方还是下方,都要保持最前方一列只有一颗子。

PS:上方的前方就是右边的意思,下方的前方就是左边的意思。

 

3,总可行域奇偶性

上方只要掌握了占领可行域的技巧,就可以撑到最后。而下方,即使不占领可行域,也可以撑到最后。

如果不出现因为可行域不够造成损失子的情况,那么最后一定会变成双方都只剩一颗子,那么谁能获胜,就看此时两颗棋子之间的距离的奇偶性。

不难发现,如果双方每次都只操作一颗棋子,那么到游戏结束之后,上方的10个棋子和下方的10个棋子到过的最终位置可以一一对应。

所以,开局的10对棋子的距离之和,就是行棋的总数。

很明显是一个奇数,所以是先手胜。

PS:开局的10对棋子的距离之和可以直接算出来,(12+13)*5-(1+2+3+4+5)*2=95

 

4,攻略二——奇偶性控制

上方是先手,如果下方每次都只移动一颗棋子,那么上方应该是有必胜策略的

下方要想赢,就必须改变总可行域的奇偶性。

下方只要一次移动两颗棋子,那么奇偶性就改变了。

而上方也可以一次移动两颗棋子,所以算盘器真正的交锋,在于通过一次移动两颗棋子,控制奇偶性。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值