棋盘游戏Terra Mystica具有一些非常有趣的机制,其中一种主要资源就是力量。每个玩家不用从银行获得和消耗权力单位,而是以恰好12个权力单位开始游戏,这些权力分配在三个“碗”中,分别标记为I,II和III。获得和消费能力然后简单地在这些碗之间转移权力:
- 要消耗一个单位的功率,请将其从III碗移到I碗(前提是您在III碗中有一个单位)。
- 当获得一个单位的功率时,如果碗I中有一个单位,请将其移至碗II中。如果碗I中没有单元,但碗II中有单元,请将其移至碗III中。如果所有装置都已经放在III号碗中,则什么也不会发生。
- 当您一次获得或花费多个单位时,将一次处理一个单位。
这是一个例子。假设玩家开始时具有以下功率分布(按顺序分配I | II | III
):
5 | 7 | 0
如果他们多次获得和花费力量,他们的力量将发生以下变化:
5 | 7 | 0
Gain 3 ==> 2 | 10 | 0
Gain 6 ==> 0 | 8 | 4 (move 2 power from I to II,
then the remaining 4 from II to III)
Gain 7 ==> 0 | 1 | 11
Spend 4 ==> 4 | 1 | 7
Gain 1 ==> 3 | 2 | 7
Spend 7 ==> 10 | 2 | 0
Gain 12 ==> 0 | 10 | 2 (move 10 power from I to II,
then the remaining 2 from II to III)
Gain 12 ==> 0 | 0 | 12 (the two excess units go to waste)
您的任务是计算一个此类收益或支出事件的结果。
挑战
您将获得四个整数作为输入。前三,I
,II
,III
,表示在三个碗的功率量。它们将为非负数,总和为12。第四个数字,P
是获得或消耗的力量数量,并且将在包含在内的范围内[-III, 24]
(因此您可以假设玩家永远不会尝试花费更多的力量比他们目前能获得的要多,但是他们获得的功率可能超过了将所有功率移入III号碗所需的功率。
您可以按照任何一致的顺序将这些数字用作单独的参数,整数列表或包含这些整数的字符串。您也可以P
作为一个参数,如I
,II
,III
作为一个单独的列表参数。
你应该输出三个整数I'
,II'
,III'
它代表发电量在每碗后 P
单位被获得或度过的,遵守规则如上所述。
您可以编写程序或函数,并使用我们的任何标准方法来接收输入和提供输出。
您可以使用任何编程语言,但是请注意,默认情况下,这些漏洞是禁止的。
这是代码高尔夫球,因此以字节为单位的最短有效答案为准。
测试用例
I II III P => I' II' III'
5 7 0 3 => 2 10 0
2 10 0 6 => 0 8 4
0 8 4 7 => 0 1 11
0 1 11 -4 => 4 1 7
4 1 7 0 => 4 1 7
4 1 7 1 => 3 2 7
3 2 7 -7 => 10 2 0
10 2 0 12 => 0 10 2
0 10 2 12 => 0 0 12