想出来了,编码,将所有格子当做64位2进制,相对于原先盘内每个格子的翻动所能代表的数都是唯一的,比如1111……11111,翻动任何一个硬币都能将变成已定义好的能代表64格子里一个数,只要把所有棋盘数字记住,并分好组即可,就是方法有点笨
韦良时 回复 @ccat637: 出来能交流的话,直接告诉不完了,还编什么码
公布答案:假设2×2的棋盘,4个格子从左上角开始顺时针分别记为ABCD 定义坐标(m,n),按如下规则确定m、n: 如果第一行(A和B)中正面朝上的硬币为奇数,则m=1,否则m=0; 如果第一列(A和D)中正面朝上的硬币为奇数,则n=1,否则n=0; 那么,无论棋盘初始状态如何,都可以通过改变任何一个硬币,构造m,n的值(翻A则m、n一起变,翻B则m变n不变……) 这样坐标就唯一确定了 —————————— 按照这个思路,扩大棋盘,8×8的棋盘只要能构造出6组0和1的数,就可以表示出64(2的6次方)个格子中的一个了 的具体怎么构造,留给大家自己考虑吧
如果一名狱卒知道生死格并能翻动一枚硬币,让另一位狱卒知道生死格的位置其实不难的。他只需咬破自己的手指,然后翻动生死格的硬币,狱友看到粘有鲜血的硬币即可判断生死格的位置。
1. 和朋友事先约定好,将棋盘64个方格顺序编号为0~63,并转换为二进制数,作为方格的序号。 2. 进房间,找出棋盘上所有正面朝上的硬币,它们所在的方格的二进制序号做异或计算,得到二进制数a。 3. 假设狱警指定的生死格的二进制序号为b,a和b做二进制异或运算,得到数c,翻转c序号的方格中的硬币,退出房间。 4. 朋友进来,根据看到的棋盘硬币正反情况,按上述步骤2的方法做异或运算,即可得到生死格的序号b。
所有格子从2^1开始标记一直到2^64,正面计正数,负面计负数,所有数加起来得到一个数n.翻动硬币后,第二个人照着上边重新计算一次,得到一个m,|(n-m)|➗2=2^x,x就是那个格子数
棋盘上的64个格子用二进制排序000000到111111,假如生死格是第21格,转换成二进制则是010101。两个囚犯先约定好任意一个六位二进制数(例如000000),囚犯A先看到棋盘后,根据棋盘上64枚硬币的正反分布情况加工约定数,先用硬币1加工,再用硬币2,再用硬币3,一直到硬币64,这样约定数被加工64次后,就会得到一个新的六位二进制数(起个名字叫加工数),加工方法是:硬币1不论正反都不对约定数做出调整。硬币2到硬币7负责调整一位约定数,例如硬币2负责约定数的第一位,正面则调整(约定数从000000变为100000),反面则不调整(约定数仍然是000000)。硬币3负责约定数的第二位,依
将棋盘扎漏,只剩边框,这样边框中的空间便是生死格了。
翻动生死格旁边的一枚硬币,使它和生死格硬币摆放一模一样,然后逆时针转五度左右,这样棋盘上两个摆放最相似的稍微顺时针偏一点点的就是生死格
进去之前把鼻涕粘在手上,然后翻过来的硬币上抹上你的鼻涕。