O jogo de tabuleiro Terra Mystica tem algumas mecânicas muito interessantes para um dos principais recursos, o poder. Em vez de ganhar e gastar unidades de poder de um banco, cada jogador inicia o jogo com exatamente 12 unidades de poder, distribuídas por três "tigelas", rotuladas como I, II e III. Ganhar e gastar poder simplesmente muda o poder entre essas tigelas:
- Para gastar uma unidade de energia, mova-a da tigela III para a tigela I (desde que você tenha uma unidade na tigela III).
- Quando você ganhar uma unidade de energia, se houver uma unidade na tigela I, mova-a para a tigela II. Se não houver unidades na tigela I, mas houver uma unidade na tigela II, mova-a para a tigela III. Se todas as unidades já estiverem na tigela III, nada acontece.
- Quando você ganha ou gasta várias unidades de uma vez, elas são processadas uma unidade de cada vez.
Aqui está um exemplo. Digamos, um jogador começa com a seguinte distribuição de energia (fornecida em ordem I | II | III
):
5 | 7 | 0
O poder deles muda da seguinte maneira se eles ganham e gastam poder algumas vezes:
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)
Sua tarefa é calcular o resultado de um desses eventos de ganho ou gasto.
O desafio
Você recebe quatro números inteiros como entrada. Os três primeiros, I
, II
, III
, representam a quantidade de energia em cada uma das três taças. Eles serão não negativos e somarão 12. O quarto número, P
é a quantidade de energia adquirida ou gasta e estará no intervalo inclusivo [-III, 24]
(portanto, você pode assumir que o jogador nunca tentará gastar mais poder do que atualmente, mas podem estar ganhando mais poder do que precisam para mover todo o poder para a tigela III).
Você pode levar esses números em qualquer ordem consistente, como argumentos separados, como uma lista de números inteiros ou como uma sequência contendo esses números inteiros. Você também pode tomar P
como um argumento, como I
, II
, III
como um argumento lista separada.
Você deve saída três inteiros I'
, II'
, III'
que representam a quantidade de energia em cada tigela depois P
unidades foram ganho ou gasto, seguindo as regras explicadas acima.
Você pode escrever um programa ou uma função e usar qualquer um dos nossos métodos padrão de recebimento de entrada e saída.
Você pode usar qualquer linguagem de programação , mas observe que essas brechas são proibidas por padrão.
Isso é código-golfe , então a resposta mais curta e válida - medida em bytes - vence.
Casos de teste
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