Google Foobar:释放Bunny Prisoners澄清

时间:2017-10-23 20:40:24

标签: java python google-foobar

我正在通过Google Foobar工作,我对#34;释放Bunny Prisoners"感到非常困惑。我不是在寻找代码,但我可以使用任何完成它的人的一些见解。首先,问题是:

  

释放兔子囚犯

     

你需要在指挥官Lambda的空间之前释放兔子囚犯   站爆炸!不幸的是,指挥官非常小心   她最高价值的囚犯 - 他们都被分开关押,   最大安全单元。通过将钥匙放入每个单元来打开单元   控制台,然后同时按下每个控制台上的打开按钮。   按下打开按钮时,每个键都会打开相应的锁定   在细胞上。因此,所有控制台中的键的组合必须是   所有的钥匙。该方案可能需要一个密钥的多个副本   给不同的奴才。

     

控制台相距足够远,需要一个单独的小兵   每一个。幸运的是,你已经释放了一些兔子来帮助你    - 甚至更好的是,当你担任指挥官Lambda的助手时,你能够窃取钥匙。问题是,你不是   知道在哪些控制台使用哪些键。控制台已编程   知道每个小兵有哪些钥匙,以防止有人   窃取所有密钥并盲目使用它们。有迹象表明   控制台说有多少爪牙有一些钥匙   控制台。你怀疑Lambda指挥官有系统的方法   决定给每个小兵哪些钥匙,以便他们可以使用   控制台。

     

你需要弄清楚Commander Lambda曾经的计划   分发钥匙。你知道有多少仆从有钥匙,有多少   控制台是由每个细胞组成的。你知道Command Lambda不会   发出超过必要的密钥(超出密钥分配   方案要求),你需要尽可能多的兔子钥匙   是打开牢房的控制台。

     

考虑到可用的兔子数量和所需的锁数   打开一个单元格,写一个函数答案(num_buns,num_required)   返回如何分配密钥的规范,以便任何   num_required bunnies可以打开锁,但没有组(num_required    - 1)兔子可以。

     

每个锁从0开始编号。键的编号相同   当他们打开锁(因此对于重复的密钥,数字将重复,   因为它打开了相同的锁)。对于给定的兔子,他们得到的钥匙是   表示为键的数字的排序列表。涵盖所有   对于兔子来说,最终答案由一个排序列表表示   每个兔子的钥匙列表。按字典顺序查找   至少这样的密钥分配 - 也就是说,第一个兔子应该有   键顺序从0开始。

     

num_buns将始终在1到9之间,num_required将始终为   在0到9之间(包括两者)。例如,如果你有3   兔子和只需要其中一个打开牢房,你会给   每个兔子都有相同的钥匙,这样他们中的任何一个都能够   打开它,如:[[0],[0],[0],]如果你有2个兔子和   要求他们两个打开牢房,他们会收到不同的   键(否则它们实际上都不是必需的)和你的   答案如下:[[0],[1],]最后,如果你有3   兔子,并要求其中2个打开牢房,然后3个中的任何2个   兔子应该拥有打开牢房所需的所有钥匙,但没有   单身兔子就能做到。因此,答案是:[
  [0,1],[0,2],[1,2],]

     

语言

     

要提供Python解决方案,请编辑solution.py以提供Java   解决方案,编辑solution.java

     

测试用例

     

输入:       (int)num_buns = 2       (int)num_required = 1输出:       (int)[[0],[0]]

     

输入:       (int)num_buns = 5       (int)num_required = 3输出:       (int)[[0,1,2,3,4,5],[0,1,2,6,7,8],[0,3,4,6,7,9],[1,3] ,5,6,8,9],[2,4,5,7,8,9]]

     

输入:       (int)num_buns = 4       (int)num_required = 4输出:       (int)[[0],[1],[2],[3]]

我无法弄明白为什么answer(5, 3) = [[0, 1, 2, 3, 4, 5], [0, 1, 2, 6, 7, 8], [0, 3, 4, 6, 7, 9], [1, 3, 5, 6, 8, 9], [2, 4, 5, 7, 8, 9]]。在我看来,[[0], [0, 1, 2], [0, 1, 2], [1], [2]]完全满足描述中规定的要求。我不知道为什么你的密钥值大于num_required-1。

我想到的一种可能性是,有一些不成文的规则表明所有的奴才/兔子都需要拥有相同数量的密钥,而且你只能拥有每个密钥的num_required。但是,如果是这种情况,那么[[0, 1, 2], [0, 1, 2], [0, 3, 4], [1, 3, 4], [2, 3, 4]]就可以了。

接下来我认为可能需要能够一次性使用所有num_required键的规则扩展到0,1和2之外,无论有多少个控制台。也就是说,您应该能够[6, 7, 8]以及[0, 1, 2]。但是,这个要求会被打破,因为第一个兔子没有任何这些数字。

我被困住了。任何提示都将不胜感激!

1 个答案:

答案 0 :(得分:1)

我认为你错过了它所说的部分

but no group of (num_required - 1) bunnies can.

我可以进一步解释我的解决方案,但我会毁了这个乐趣。 (我是那个回购的所有者)。 让我们试试你的答案。

[[0], [0, 1, 2], [0, 1, 2], [1], [2]]

你的游戏机是3.兔子2可以自己打开它,兔子3也可以自己打开它 - >它不符合规则。