Das Spiel Waving Hands befindet sich irgendwo zwischen einer Stift-Papier-Magie: The Gathering und einer sehr aufwändigen Steinpapierschere. In jeder Runde schreiben Sie eine von acht Gesten für jede Hand auf:
- wiggled
F
Ingers - angebotene
P
Alm S
NickerchenW
aveD
igit zeigtC
Runde- sta
B
N
etwas anderes
Es gibt nur wenige wichtige Regeln, die Vorrang vor den anderen haben:
- Wenn beide Hände Geste
P
automatisch übergeben . (Dies ist eine Vereinfachung, aber wir werden damit weitermachen.) - Es kann immer nur eine Hand gestikulieren
B
.
Eine Reihe von Gesten, die von derselben Hand ausgeführt werden, können einen Zauber wirken, wobei jeder Zauber an eine bestimmte Sequenz gebunden ist. Diese Sequenzen können sich überschneiden, aber jede Geste kann nur als letzte Geste eines einzelnen Zaubers verwendet werden (Sie können also bis zu zwei Zaubersprüche in einer einzigen Runde erstellen). Bei einigen Zaubersprüchen muss eine Geste mit beiden Händen gleichzeitig ausgeführt werden.
Ihre Aufgabe ist es, anhand einer Liste von Gesten für jede Hand zu bestimmen, welche Zauber in der aktuellen Runde gewirkt werden können. Für jede Hand repräsentiert der letzte Buchstabe in der Liste die Geste, die für die aktuelle Runde ausgewählt wurde.
Hier ist die Liste der Gestensequenzen. Großbuchstaben beziehen sich auf eine Geste, die von einer einzelnen Hand ausgeführt wird, Kleinbuchstaben beziehen sich auf eine Geste, die mit beiden Händen ausgeführt wird.
B Stab
cDPW Dispel magic
cSWWS Summon elemental
cw Magic mirror
DFFDD Lightning bolt
DFPW Cure heavy wounds
DFW Cure light wounds
DPP Amnesia
DSF Confusion
DSFFFc Disease
DWFFd Blindness
DWSSSP Delayed effect
DWWFWc Raise dead
DWWFWD Poison
FFF Paralysis
FPSFW Summon troll
FSSDD Fireball
P Shield
p Surrender
PDWP Remove enchantment
PPws Invisibility
PSDD Charm monster
PSDF Charm person
PSFW Summon ogre
PWPFSSSD Finger of death
PWPWWc Haste
SD Missile
SFW Summon goblin
SPF Antispell
SPFPSDW Permanency
SPPc Time stop
SSFP Resist cold
SWD Fear
SWWc Fire storm
WDDc Lightning bolt
WFP Cause light wounds
WFPSFW Summon giant
WPFD Cause heavy wounds
WPP Counterspell
WSSc Ice storm
WWFP Resist heat
WWP Protection from evil
WWS Counterspell
Ja, Lightning bolt
und Counterspell
haben jeweils zwei verschiedene Sequenzen.
Sie können ein Programm oder eine Funktion über STDIN, Befehlszeilenargument oder Funktionsargument schreiben und Eingaben in einem beliebigen Listen- oder Zeichenfolgenformat vornehmen, sofern diese nicht vorverarbeitet sind. Sie können Zauberpaare über den Rückgabewert oder durch Drucken auf STDOUT ausgeben. Auch hier können Sie ein beliebiges praktisches Listen- oder Zeichenfolgenformat verwenden, solange die Ausgabe eindeutig ist.
Sie können davon ausgehen, dass die Sequenzen für die linke und die rechte Hand gleich lang und gültig sind (insbesondere B
werden sie niemals von zwei Händen gleichzeitig ausgeführt). Beachten Sie, dass die Eingabe nur Großbuchstaben enthält. In der obigen Liste werden nur Kleinbuchstaben verwendet, um anzuzeigen, dass beide Hände dieselbe Geste (in Großbuchstaben) ausführen müssen.
Bei Zaubersprüchen, die mit einer Zweihandbewegung enden, sollten Sie nur einen einzigen Zauberspruch ausgeben. Wenn eine Hand keinen Zauber ausführen kann, muss dies durch eine Zeichenfolge angezeigt werden, die nur einen Bindestrich enthält -
.
Dies ist Code Golf, daher gewinnt die kürzeste Antwort (in Bytes).
Beispiele
Jedes Beispiel besteht aus drei Zeilen: der linken Sequenz, der rechten Sequenz (beide Eingaben; die Geste ganz rechts ist die aktuellste) und der Liste aller möglichen Zauberkombinationen (der Ausgabe).
WFP
WWS
[["Cause light wounds","Counterspell"],["Shield","Counterspell"]]
SD
BB
[["Missile","Stab"]]
WWP
WPP
[["Surrender"]]
DFW
CCW
[["Cure light wounds","-"]]
FFW
WWF
[["-","-"]]
DCW
CCW
[["Magic mirror"]]
WFPSFW
PPDDPP
[["Summon goblin","Shield"],["Summon ogre","Shield"],["Summon troll","Shield"],
["Summon giant","Shield"],["Summon goblin","Amnesia"],["Summon ogre","Amnesia"],
["Summon troll","Amnesia"],["Summon giant","Amnesia"]]
BSWWS
CSWWS
[["Counterspell","Counterspell"]]
CSWWS
CSWWS
[["Counterspell","Counterspell"],["Counterspell","Summon elemental"],
["Summon elemental","Counterspell"],["Summon elemental","Summon elemental"]]
PWPWWC
BBSPPC
[["Haste"],["Time stop"]]