趣题:八根并排放置的水管

    下面这个有趣的问题来自于 2012 年 4 月的 IBM Ponder This 谜题

    有 8 根很长的并且颜色不同的水管并排放在一起, A 、 B 两人分别位于这些水管的两端。两个人手中各有若干根很短的橡皮管,他们可以用这些橡皮管任意连接自己这一侧的水管口。 A 的旁边还有一个水龙头, A 可以用橡皮管把水龙头与自己这一侧的其中一个水管口相连。

    A 、 B 两人各将获得一个五位 01 串,然后两人可以根据自己手中的 01 串来连接水管口。当 A 打开水龙头后,容易看出,水必然会从其中一侧流出。两人需要保证,如果两人手中的 01 串相等,则水从 A 的一侧流出,否则水从 B 的一侧流出。他们事先可以商量一个策略,但游戏一旦开始,两人一旦拿到各自的 01 串之后,就不允许再交流了(因此两人都不知道对方手中的 01 串是什么)。请你想出一个能保证两人获胜的策略。


 
 
 
 
 
 
 
 
 
 
 
 
 
    让我们先来看另一个问题。假如 A 、 B 之间有 4 根水管,他们各自将获得一个 0 到 5 之间的整数,如何才能让水从 A 侧流出,当且仅当两人手里的整数相等?注意到,从 4 根水管中选出 2 根共有 6 种方案,两人可以事先约定好,每个整数分别代表连接哪两根水管。游戏开始后, B 把他手中的整数所对应的“水管对”连接起来, A 也找出自己手中的整数所对应的两根水管,并把其中一个记为“入口”,把另一个记为“出口”,然后把另外的两根水管连接上。 A 把水龙头接到“入口”,如果 A 、 B 两人的数相等,水将会从“出口”流出。

    好了。实际上, A 、 B 之间将会有 8 根水管,每 4 根水管能处理 6 个数的情况, 8 根水管不就能处理 36 个数的情况了吗? A 、 B 两人可以把 0 到 35 的整数想成是一个两位的六进制数,并约定好哪 4 根水管代表低位,哪 4 根水管代表高位。这样,两人不就能判断出低位和高位是否分别相等了吗?

    但是这里有一个问题: A 那里只有一个水龙头,而上述方案需要给高位和低位各一个水龙头。我们需要想个办法把“低位出水”和“高位出水”做一个逻辑与的运算。接下来的一步就牛了: A 可以把水龙头接到低位的“入口”,再把低位的“出口”接到高位的“入口”。如果 A 、 B 手中的数完全相等,水最终会从高位的“出口”流出。

    五位 01 串共有 32 种可能,因而原问题自然也就解决了。

35 条评论

发表评论

5  ×  10  =