Geek
脑力小体操:张三该当何罪
上一期 绝地求生之看不见的背号
这一问题改编自matrix67的博客,据说来自2009年北大BBS化学学院版,最后上了十大热门话题第三了。
其实一开始命题的时候,我个人认为最有可能的作弊方式,是在通过左转或右转向第一个展示后背的人传递编码信息。
但这本来就是一个陷阱。有位朋友评论说,如果要囚犯展示背号,又怎么限制他们传递信息呢?
其实吧,这本来就是一个陷阱。在故事背景里说过,纳粹看守本意是要找个借口铲除他们。
但最开始一期说过,他本人自豪于家族荣耀和军官身份,所以不愿意毫无道理地杀人。所以,故意设下陷阱,如果囚犯尝试当着他的面作弊的话,那自然不用再留手。
但万一作弊方式十分巧妙,他没看出来呢?
只要作弊就能看出来——其实不光他,我们基本都能看出来。在生活里,我们对身边的发生的协作欺诈或恶作剧一类的行为,都提前有所感知,只不过平时没有证据,事情一般也不严重,我们就单纯内心怀疑一下罢了。那种不动声色、浑然天成的表演,本来就需要很高的天赋和丰富的行骗经验。生活里所能遇到的大多数骗局,大多数都是用潜在的巨大利益蒙蔽当事人的心窍,让对方去主动相信骗子描绘出的情景。通常并非是骗局有多高明。
同时,纳粹军官并不需要什么证据。他只是不想玷污内心的骄傲。他高度自信,相信自己的感觉。
所以,他表达的“你们可以事先交流对策,然后展示彼此的背号,但不要试图传递某人背上是哪个数字的信息”这句话,真实意思是说,你们的策略应该是关于利用自己所见的其他人的背号信息求解,而非是如何向其他人传递他背号的信息。
至于说无需传递消息的解答。本来写了两期答案的详细解析,5000多字。结果突然停电几秒钟,等开机恢复自动保存之后,又停了几秒钟……最终字数全清。
估计就算写出来,也没几个人想看如何用异或运算的基本律推导答案的过程。索性算了。
答案(之一)
8个人在交流的时候先定好顺序0~7,同时把自己看到的,其他人的背号从1~8换算成0~7。然后改成二进制,从000~111。然后每个人将其他人的背号异或一遍,得到的结果再同自己的顺序号异或一次。最终必有一人可得到自己的背号(要记得再从0~7换成1~8)。
简单解释一下,这8个数异或起来的结果为X(显然0 ≤ X ≤ 7),第i个人身上的数记为A_i,那么他猜的数其实就是X xor A_i xor i。那么,编号为X的人(此时i=X)报出的数恰好就是他背上的那个数。
评论区illusory简述了类似的过程。
答案(之二)
来自Tunn的解答:
设所有数字和除8的余数为x,每个人各自记好一个不同的x(8个人分别为0~7),然后根据x和其他人的数字就可以唯一确定出自己的数字,这样x与实际余数相同的那个人就会猜对
来自Qwaszxokm的证明:
这位@ho大佬的答案(第n个进入的人报的数为mod(其它7个人背上的数的总和*7+n,8))是到现在为止我唯一看到的正确答案,但是大佬只给出了算法没有证明,我尝试解释一下为什么这种算法是正确的。
首先说明,所有靠任何方式传递信息的方法都不符合出题人意图,或者说,每个人只能获得其它人背上的数与自己的次序。
开始解释,设所有人背上的数之和为8k+b,k,b为整数且在0~8之间。那么,设第b个进入的人背上数为a,根据算法,他将要报的数为mod((8k+b-a)*7+b,8),展开为mod(56k+7b-7a+b,8),将8的倍数消去,得mod(-7a,8)=a
证毕
注意,在证明过程中可以发现,当总数和每个人的次序固定的时候,则具体哪个囚犯可以得到正确号码就也是确定的事实了。
用来自capt的js代码进行验证(说一下,人家的源代码可能是转码的问题,里面的减号在我这里不识别为-,直接运行会报错,所以我自行改了)
for (var i = 8; i < 65; i++) { for (var j = 1; j < 9; j++) { a = ((i-j) * 7 + j) % 8 if (a == j) { console.log("当总数为", i, "时,第", j, "个人可以答对。"); break; } else if (j == 8) { if (a == 0) { console.log("当总数为", i, "时,第", j, "个人可以答对。"); } else { console.log("当总数为", i, "时,都得死。"); } } } }
输出结果。
当总数为 8 时,第 8 个人可以答对。
VM233100:5 当总数为 9 时,第 1 个人可以答对。
VM233100:5 当总数为 10 时,第 2 个人可以答对。
VM233100:5 当总数为 11 时,第 3 个人可以答对。
VM233100:5 当总数为 12 时,第 4 个人可以答对。
VM233100:5 当总数为 13 时,第 5 个人可以答对。
VM233100:5 当总数为 14 时,第 6 个人可以答对。
VM233100:5 当总数为 15 时,第 7 个人可以答对。
VM233100:9 当总数为 16 时,第 8 个人可以答对。
VM233100:5 当总数为 17 时,第 1 个人可以答对。
VM233100:5 当总数为 18 时,第 2 个人可以答对。
VM233100:5 当总数为 19 时,第 3 个人可以答对。
VM233100:5 当总数为 20 时,第 4 个人可以答对。
VM233100:5 当总数为 21 时,第 5 个人可以答对。
VM233100:5 当总数为 22 时,第 6 个人可以答对。
VM233100:5 当总数为 23 时,第 7 个人可以答对。
VM233100:9 当总数为 24 时,第 8 个人可以答对。
VM233100:5 当总数为 25 时,第 1 个人可以答对。
VM233100:5 当总数为 26 时,第 2 个人可以答对。
VM233100:5 当总数为 27 时,第 3 个人可以答对。
VM233100:5 当总数为 28 时,第 4 个人可以答对。
VM233100:5 当总数为 29 时,第 5 个人可以答对。
VM233100:5 当总数为 30 时,第 6 个人可以答对。
VM233100:5 当总数为 31 时,第 7 个人可以答对。
VM233100:9 当总数为 32 时,第 8 个人可以答对。
VM233100:5 当总数为 33 时,第 1 个人可以答对。
VM233100:5 当总数为 34 时,第 2 个人可以答对。
VM233100:5 当总数为 35 时,第 3 个人可以答对。
VM233100:5 当总数为 36 时,第 4 个人可以答对。
VM233100:5 当总数为 37 时,第 5 个人可以答对。
VM233100:5 当总数为 38 时,第 6 个人可以答对。
VM233100:5 当总数为 39 时,第 7 个人可以答对。
VM233100:9 当总数为 40 时,第 8 个人可以答对。
VM233100:5 当总数为 41 时,第 1 个人可以答对。
VM233100:5 当总数为 42 时,第 2 个人可以答对。
VM233100:5 当总数为 43 时,第 3 个人可以答对。
VM233100:5 当总数为 44 时,第 4 个人可以答对。
VM233100:5 当总数为 45 时,第 5 个人可以答对。
VM233100:5 当总数为 46 时,第 6 个人可以答对。
VM233100:5 当总数为 47 时,第 7 个人可以答对。
VM233100:9 当总数为 48 时,第 8 个人可以答对。
VM233100:5 当总数为 49 时,第 1 个人可以答对。
VM233100:5 当总数为 50 时,第 2 个人可以答对。
VM233100:5 当总数为 51 时,第 3 个人可以答对。
VM233100:5 当总数为 52 时,第 4 个人可以答对。
VM233100:5 当总数为 53 时,第 5 个人可以答对。
VM233100:5 当总数为 54 时,第 6 个人可以答对。
VM233100:5 当总数为 55 时,第 7 个人可以答对。
VM233100:9 当总数为 56 时,第 8 个人可以答对。
VM233100:5 当总数为 57 时,第 1 个人可以答对。
VM233100:5 当总数为 58 时,第 2 个人可以答对。
VM233100:5 当总数为 59 时,第 3 个人可以答对。
VM233100:5 当总数为 60 时,第 4 个人可以答对。
VM233100:5 当总数为 61 时,第 5 个人可以答对。
VM233100:5 当总数为 62 时,第 6 个人可以答对。
VM233100:5 当总数为 63 时,第 7 个人可以答对。
VM233100:9 当总数为 64 时,第 8 个人可以答对。
可以看出,总数固定,则无论具体号牌如何分配,按算法总是特定囚犯可以答对。
——————————————————————————————————————————————————————————————————————————————
本期问题换个口味。
在上世纪90年代,大街上有一种载客面包车。交通运输功能介于公交车和出租车之间。当时有好多载客面包车是没有执照的——就是所谓的黑车。黑面包车的价格更低廉,但是拉得客人更多(也就是说常常超载)。车上一般有个司机,专注开车。还有一个收钱售票,还负责大嗓门招揽客人。要点是报出目的地,票价(因为是黑车,所以等车乘客也不知道它是去哪的,要多少钱)。
当年在东北某市,张三是一个黑面包车司机,李四是售票。
话说这一天,他俩生意特别好,每个站点都有好多人上车。结果有个着急的乘客不干了——姑且叫他王五吧。
王五:你们这样死命拉人上来,车上都挤死了。而且我赶时间,你们不停的上人,到终点就晚了。
李四:我们一趟那么便宜,不多拉点人就亏钱了啊。
两人越说火气越大。最后开始对骂。
王五:好,钱给我,我下车。
李四:钱给你行,但我们这里不停车。
王五:不用你们停车,我直接下。
说罢,王五真的拉开了车门,作势跳下车。
张三本想立刻减速,李四突然吼道:“踩油门!摔死这狗*!”
张三顺势就踩了油门。结果王五跳出的时候受了重伤,最终不治身亡。
现在,执法部门根据车上其他乘客的口供,还原了当时的情景(就是上面的描述)。
现在,假如你是检察官,不考虑黑车非法运营的问题,单说王五的死亡,张三和李四应该负什么样的刑事责任?
①对张三给出几个选项
A. 乘客自己要在行车过程中下车,咎由自取;张三无责任,或仅仅承担道义/民事责任;
B. 属于过失致人死亡;
C. 属于直接故意致人死亡;
D. 属于间接故意致人死亡;
E. 属于不作为罪;
F. 其他(评论里给出解析)
②对李四,就不给选项了。他有罪吗?有罪的话是教唆还是间接正犯吗?或者是共同犯罪?大家都听过罗翔说刑法吧,试着分析一下。
③又如果,李四当时没有喊那一句“踩油门!摔死这狗*!”,结果王五还是死了,那张三和李四的责任是否有所不同呢?