Das Brettspiel Terra Mystica hat einige sehr interessante Mechanismen für eine der wichtigsten Ressourcen, die Kraft. Anstatt Krafteinheiten von einer Bank zu erhalten und auszugeben, beginnt jeder Spieler das Spiel mit genau 12 Krafteinheiten, die auf drei "Schalen" mit den Bezeichnungen I, II und III verteilt sind. Macht gewinnen und ausgeben verschiebt dann einfach die Macht zwischen diesen Schalen:
- Um eine Krafteinheit auszugeben, bewegen Sie sie von Schüssel III zu Schüssel I (vorausgesetzt, Sie haben eine Einheit in Schüssel III).
- Wenn du eine Krafteinheit erhältst, lege sie in Schüssel II, wenn sich eine Einheit in Schüssel I befindet. Befindet sich keine Einheit in Schüssel I, aber eine Einheit in Schüssel II, stellen Sie sie in Schüssel III. Wenn sich alle Einheiten bereits in Schüssel III befinden, geschieht nichts.
- Wenn Sie mehrere Einheiten auf einmal erhalten oder ausgeben, werden diese einzeln verarbeitet.
Hier ist ein Beispiel. Angenommen, ein Spieler beginnt mit der folgenden Leistungsverteilung (in der angegebenen Reihenfolge I | II | III
):
5 | 7 | 0
Ihre Kraft ändert sich wie folgt, wenn sie einige Male Kraft aufnimmt und ausgibt:
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)
Ihre Aufgabe ist es, das Ergebnis eines solchen Gewinn- oder Ausgabenereignisses zu berechnen.
Die Herausforderung
Sie erhalten vier Ganzzahlen als Eingabe. Die ersten drei, I
, II
, III
, stellen die Energiemenge in jedem der drei Schalen. Sie sind nicht negativ und summieren sich zu 12. Die vierte Zahl P
gibt die Menge der gewonnenen oder verbrauchten Kraft an und befindet sich im Inklusivbereich [-III, 24]
(Sie können also davon ausgehen, dass der Spieler niemals versuchen wird, mehr Kraft zu verbrauchen als sie derzeit können, aber sie könnten mehr Kraft gewinnen, als sie brauchen, um die gesamte Kraft in die Schüssel III zu befördern.
Sie können diese Zahlen in einer beliebigen konsistenten Reihenfolge als separate Argumente, als Liste von Ganzzahlen oder als Zeichenfolge mit diesen Ganzzahlen verwenden. Sie kann auch P
als ein Argument, wie I
, II
, III
als separate Liste Argument.
Die Ausgabe sollten drei ganze Zahlen I'
, II'
, aus III'
denen die Menge an Energie in jeder Schale nach P
Einheiten gewonnen wurden oder verbracht, nach den Regeln oben erläuterten.
Sie können ein Programm oder eine Funktion schreiben und eine unserer Standardmethoden zum Empfangen und Bereitstellen von Eingaben verwenden.
Sie können jede Programmiersprache verwenden , aber beachten Sie, dass diese Lücken standardmäßig verboten sind.
Das ist Code-Golf , also gewinnt die kürzeste gültige Antwort - gemessen in Bytes .
Testfälle
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