El juego de mesa Terra Mystica tiene algunas mecánicas muy interesantes para uno de los principales recursos, el poder. En lugar de obtener y gastar unidades de poder de un banco, cada jugador comienza el juego con exactamente 12 unidades de poder que se distribuyen en tres "cuencos", que están etiquetados como I, II y III. Ganar y gastar poder simplemente cambia el poder entre estos cuencos:
- Para gastar una unidad de poder, muévala del tazón III al tazón I (siempre que tenga una unidad en el tazón III).
- Cuando ganes una unidad de poder, si hay una unidad en el tazón I, muévela al tazón II. Si no hay unidades en el recipiente I, pero hay una unidad en el recipiente II, muévala al recipiente III. Si todas las unidades ya están en el recipiente III, no pasa nada.
- Cuando gana o gasta varias unidades a la vez, se procesan una unidad a la vez.
Aquí hay un ejemplo. Digamos, un jugador comienza con la siguiente distribución de poder (dada en orden I | II | III
):
5 | 7 | 0
Su poder cambia de la siguiente manera si ganan y gastan poder varias veces:
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)
Su tarea es calcular el resultado de uno de esos eventos de ganancia o gasto.
El reto
Te dan cuatro enteros como entrada. Los tres primeros, I
, II
, III
, representan la cantidad de energía en cada uno de los tres tazones. No serán negativos y sumarán 12. El cuarto número, P
es la cantidad de poder ganado o gastado, y estará en el rango inclusivo [-III, 24]
(por lo que puede suponer que el jugador nunca intentará gastar más poder). de lo que pueden actualmente, pero podrían estar ganando más poder del que necesitan para mover todo el poder al bol III).
Puede tomar estos números en cualquier orden consistente, como argumentos separados, como una lista de enteros o como una cadena que contiene estos enteros. También se puede tomar P
como un argumento, como I
, II
, III
como un argumento lista separada.
Usted debe de salida tres enteros I'
, II'
, III'
que representan la cantidad de energía en cada plato después de P
unidades se adquirieron o se gastan, siguiendo las reglas explicadas anteriormente.
Puede escribir un programa o una función y utilizar cualquiera de nuestros métodos estándar para recibir entradas y proporcionar salidas.
Puede usar cualquier lenguaje de programación , pero tenga en cuenta que estas lagunas están prohibidas por defecto.
Este es el código de golf , por lo que gana la respuesta válida más corta, medida en bytes .
Casos de prueba
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