大航海时代吧 关注:77,198贴子:1,001,112
  • 4回复贴,共1

大航海时代3迷你游戏之5 硬币游戏:13个金币用天平称3次

取消只看楼主收藏回复

大航海时代3中有个迷你游戏叫“硬币游戏”,游戏给出9至13个金币要求用天平称三次,找出唯一一个重量不同的金币。这纯粹就是一个数学题,网上可以搜索到类似的比如13个小球称重的解法,但是遗憾的是,很少有9~13个都适用的通用解法,以及详尽的分支图,有些解法甚至是错误的。所以我只好自己动手解一回了。


IP属地:浙江1楼2020-01-21 22:44回复
    我们回到大航海时代3的硬币游戏。

    界面上有三个按键,功能分别是这样的:
    WEIGH:称重,注意天平两边金币数量应保持一样
    CLEAR:清除,不管放了多少个金币在天平两端,按下这个按键就都清除了,方便重新放
    DECIDE:决定,按下这个按键,然后选择一个金币,那不管你之前称没称过,这个金币都被系统认为是你选中的那个重量不同的金币,如果选择错误,则显示“挑错金币。天平倾斜”
    基本思路:
    由于重量不同的金币是唯一的,但是不知道轻重,通过天平称重需要区分13(金币数量)×2(重或轻2种状态)=26种不同情况,每一次称重时天平有3种状态,平衡、左重右轻、左轻右重,称重3次,会出现27种可能的组合,我们可以把这27种可能看成3位的3进制数,或者看成编码,理论上组织恰当的话,应该能标识出26种不同情况。
    接下来,第一次称重很关键,如果左右各放3个金币恰巧天平平衡,那么剩下7个金币14种状态,而剩下称重2次最多只能区分9种情况,显然会导致失败,左右少于3个就更不行了。那是不是第一次称重越多越好呢,也不是,比如左右各放5个金币,恰巧左边重或者右边重,标准硬币只有3个,结果都是需要在剩下2次称重中区分10种情况(重的一边5个中有1个金币重了,或者轻的一边5个中有1个轻了),显然也会导致失败,左右各放6个就更不行了。
    第一次称重合适的数量,看来只剩下左右各放4个金币了。当然如果总数不是13,选择余地会相应增加,只有9个金币的称法就可以任性很多。


    IP属地:浙江2楼2020-01-21 22:47
    回复
      2026-02-07 07:28:09
      广告
      不感兴趣
      开通SVIP免广告
      通用解法,以13个金币为例,适用于9~13个金币的情形,在这里我先把判断分支的图给出,这就一目了然了。

      上面给出的图中,序号为红色的金币为前面称重时确定的标准重量金币。
      以下为详细解说:
      给13个金币依次编号①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬,如果天平平衡,用=表示,如果天平左重右轻,用>表示,反之则是<。
      一、第一次称重,当①②③④=⑤⑥⑦⑧时,得到的信息为①②③④⑤⑥⑦⑧为标准重量金币,那个重量不同的金币在⑨⑩⑪⑫⑬中,第二次称重选择①⑪与⑨⑩进行比较,其中①为标准重量金币
      1、如果①⑪=⑨⑩,那么重量不同的唯一金币就在⑫⑬,把⑫⑬其中的一个与标准重量金币比较,就能得到结果,但这里有个小小的遗憾,就是如果恰巧第三次称重时①=⑫,那么我们就只能知道那个重量不同是的⑬,却不知道⑬到底是重了还是轻了,第三次称重用①和⑬也会有同样情况。
      2、如果①⑪>⑨⑩,或者⑨<⑩,那么第三次称重只要比较⑨和⑩就能知道结果。
      二、第一次称重,当①②③④>⑤⑥⑦⑧时,得到的信息为⑨⑩⑪⑫⑬为标准重量金币,那个重量不同的金币在①②③④⑤⑥⑦⑧中,第二次称重,左边去掉1个、右边去掉2个、左右再交换1对的位置,比如第二次称重中③④⑤为一组与②⑥⑨进行比较。
      1、③④⑤=②⑥⑨时,重量不同的金币在剩下的①⑦⑧中,第三次称重只要比较第一次称重时在同侧的⑦和⑧就能知道结果。
      2、③④⑤>②⑥⑨时,与第一次称重比较,第二次交换金币后左重右轻的情况没有改变,说明交换过位置的金币②⑤是标准重量的,重量不同的金币在③④⑥中,比较前两次称重时都在同侧的③和④就能知道结果。
      3、③④⑤<②⑥⑨,与第一次称重比较,第二次交换金币后称重左重右轻变为左轻右重,说明重量不同的金币在交换过位置的②⑤中,用标准金币⑨来比较其中一个就能知道结果,比如用⑨与②进行比较,如果⑨=②,则说明⑤是那个重量不同的金币,并且重量较标准为轻,如果⑨≠②,那②就是重量不同的金币,并且⑨<②,因为根据③④⑤<②⑥⑨判断,既然②为重量不同金币,那③④⑤⑥和⑨同为标准重量金币,不可能存在⑨>②的情况。
      二、第一次称重,当①②③④<⑤⑥⑦⑧时,情况与①②③④>⑤⑥⑦⑧相似,不再赘述。


      IP属地:浙江3楼2020-01-21 22:48
      收起回复
        几个实例:




        IP属地:浙江4楼2020-01-21 22:51
        回复
          事实上如果不以追求通用为目标,每一种特定数量的金币,都可以有自己专用的解法,比如13个金币也可以用下图中的解法得到结果。其他数量不再赘述,请自行设计。

          最后给大家留一个问题,上述2种关于13个金币的解法,都有一个分支或者说都有概率出现只知道某个金币重量不同但却不知道它比标准重量是重了还是轻了的情况,那么有没有一种称法可以做到13个金币全部都能确定重量比标准的重了或者轻了呢?


          IP属地:浙江5楼2020-01-21 22:52
          回复