在知乎上看到一个问题,「石头剪子布」游戏还有其它变种吗?。得票最多的回答给出了有趣的答案,并且提出了一个问题:什么样的手势容易被记住?
设计规则大家都看明白了,毫无难度,难点是设计101个表示不同胜负要素的手势——打死我也不可能记住的。
利用同余概念,即
我们作如下的定义:
- N个手势,0...N-1
- 胜负规则, i 胜 从i+1开始的(N-1)/2个元素,i负给另 (N-1)/2个元素。比如N=5,0胜 1、2 ,负3、4.其他的依次类推
对于任意手势x,y。x-y可能的取值范围是[-(N-1),-(N-2),...0...N-2,N-1]
注意到-i与N-i(i>0)描述的是相同的胜负结果,即 -i=N-i %N 。
根据前面定义的胜负规则,可知x的胜负情况由下面的公式判定。
result=(x-y)%N
- result=0 平手
-
0< result <=
胜
-
<= result<=N-1 负
这样一来,对于RPS-N中的任意两个手势,胜负的判定就交给这个公式计算就行了,而不需要记住所有的规则