原帖:https://bbs.wenxuecity.com/znjy/5003838.html
题目:8x8棋盘,上面有随机数量的硬币,摆放在随机位置。如果在这样的棋盘上,某人C随机指定一位置作为无形目标。朋友A在此情况下,只要在没有硬币的地方再加一硬币或者拿掉一个现有硬币,只看到最后盘面的朋友B就能确定C给无形目标的位置。
这个答案YouTube上有,感兴趣的同学可以自己看看。我再用中文解答一下。上次有人抱怨我的中文很差,可能是因为跳跃的比较多,不够细致和连贯。这次尽量耐心一些。
从最后的结果看,因为B不需要知道前面的过程就能确定C指定的位置,说明棋盘上硬币的位置组合对应棋盘上唯一一个格子。当然反过来并不成立,也就是说,棋盘上每一个格子位置可以有很多种由不同硬币的位置组合来表达。这表达的方式非常精妙,详述如下:
首先棋盘的每一格子的位置用0-63的二进制,也就是从000000到111111来代表。因为有六位数,我们可以将棋盘分为6个组合,那么每个组合中所有硬币数量的奇偶就可以确定某个位数的数值。从低位到高位这6个组合分别是(参见图二):
1)2,4,6,8列;2)3,4,7,8列; 3)5,6,7,8列;4)2,4,6,8行;5)3,4,7,8行, 6)5,6,7,8行;
以下图为例:
根据图示分区结果,它们的组合代表位置110001 =>49
也就是下图中圆圈代表的位置。
假设在此盘面上,C指定一位置21=>010101,如下图所示:
那么A需要改动那个位置呢?奇妙中的奇妙,就是数学牛人发现,这个位置正好是起始位110001和目标位置010101的二进制和(binary and). 110001&010101=100100 =>36, 所以A就把36位的硬币拿掉,成为下图所示最后的盘面。
B根据该盘面就可以确定C所指的位置21。我们可以验证一下
仅以此和喜欢数学游戏的朋友及孩子分享一下。