曼卡拉(Mancala)是一系列棋盘游戏的名称,通常涉及一系列杯子,杯子中装有玩家操纵的珠子。该挑战将为游戏的单人纸牌变体使用特定的规则集。
该板的一端是一个“篮子”,然后是无数个杯子(从1开始编号)。某些杯子中会有一些珠子。如果n
杯子中恰好有n
珠子,则可以从中“撒出”珠子。播种是指将所有n
珠子从杯子中取出,然后一次将它们在每个杯子中朝篮子放置。最后的珠子将进入篮子。当棋盘上的所有珠子都在篮子中时,玩家获胜。
显然,有许多棋盘无法胜出,例如,第二个杯子中恰好有一个珠子。没有合法玩法,因为不能播种所有带有0个珠子的杯子,并且第二个杯子没有要播种的珠子。显然这没什么好玩的,所以您的任务是创建可赢得的棋盘。
任务
给定表示多个珠子的正整数,将输出一个非负整数的列表,该非负整数表示应放入每个杯子中以制成如上所述的可取下的棋子的珠子的数量。此列表不应包含任何尾随零。
对于任何给定数量的珠子,始终只有一种可胜任的棋盘配置。
示范
这是演示如何玩可赢局并输入4的示例[0, 1, 3]
。可赢局是。我们从唯一可用的举动开始,从第三个杯子中播出珠子,得到[1, 2, 0]
。现在我们实际上有一个选择,但是唯一正确的选择是播下第一个杯子,得到:[0, 2, 0]
。然后,我们播种第二个杯子[1, 0, 0]
,最后我们再次播种第一个杯子,以得到所有空杯子。
测试用例:
1 => [1]
2 => [0, 2]
3 => [1, 2]
4 => [0, 1, 3]
5 => [1, 1, 3]
6 => [0, 0, 2, 4]
7 => [1, 0, 2, 4]
8 => [0, 2, 2, 4]
9 => [1, 2, 2, 4]
10 => [0, 1, 1, 3, 5]
11 => [1, 1, 1, 3, 5]
12 => [0, 0, 0, 2, 4, 6]
13 => [1, 0, 0, 2, 4, 6]
14 => [0, 2, 0, 2, 4, 6]
15 => [1, 2, 0, 2, 4, 6]
16 => [0, 1, 3, 2, 4, 6]
17 => [1, 1, 3, 2, 4, 6]
18 => [0, 0, 2, 1, 3, 5, 7]
19 => [1, 0, 2, 1, 3, 5, 7]
20 => [0, 2, 2, 1, 3, 5, 7]
非常感谢PeterTaylor提出了生成测试用例的程序!