В настольной игре 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