Wenn Sie kurz nach dem 4. Mai eine Herausforderung mit einer Star Trek-Referenz angehen, kann dies verpönt sein.
Sie, Luke, Anakin, Palpatine, Yoda und Han Solo sind in ein verrücktes Turnier aus Rock, Paper, Scissor, Lizard, Spock verwickelt.
Der Haken hier ist, dass Sie nur eine feste Reihenfolge von Zügen verwenden dürfen. Wenn Ihr Befehl "R" lautet, müssen Sie Rock verwenden, bis Sie gegen alle verlieren oder gewinnen. Wenn Ihre Bestellung RRV ist, müssen Sie 2 Steine gefolgt von einem Spock verwenden und so lange wiederholen, bis Sie gewonnen oder verloren haben.
Luke, Anakin, Palpatine, Yoda und Han Solo haben ihre jeweiligen Bestellungen eingereicht und Sie, ein erfahrener Hacker, haben jede ihrer Bestellungen in die Hände bekommen!
Mit diesem Wissen müssen Sie Ihre Bestellung für das Turnier gestalten. Da jeder gewinnen möchte, möchten Sie eine Bestellung erstellen, bei der Sie das Turnier gewinnen, indem Sie alle schlagen. Dies ist jedoch möglicherweise nicht unter allen Umständen möglich.
Wenn es eine mögliche Gewinnreihenfolge gibt, drucken Sie diese aus. Wenn Sie nicht gewinnen können, drucken Sie -1 (oder 0 oder False oder "impossible") aus.
Eingabe : eine Liste von 5 Bestellungen
Ausgabe : eine einzelne Bestellung oder -1
Probeneingabe 1
R
P
S
L
V
Beispielausgabe 1
-1
Erklärung 1
Egal, was Sie in Ihrem ersten Zug spielen, es wird mindestens eine Person geben, die Sie schlägt, daher ist es nicht möglich, dass Sie gewinnen.
Probeneingabe 2
RPS
RPP
R
SRR
L
Beispielausgabe 2
RPSP
Erklärung 2
Sobald Sie in Ihrem ersten Zug Rock spielen, schlagen Sie "L" und "SRR" und binden gegen den Rest. Dies liegt daran, dass Lizard und Scissors gegen Rock verlieren. Wenn Sie das nächste Mal Papier spielen, schlagen Sie "R" und binden gegen die restlichen 2. Dies liegt daran, dass Rock gegen Papier verliert. Wenn Sie als nächstes Schere spielen, gewinnen Sie gegen "RPP", wenn Schere Papier schlägt.
Schließlich schlagen Sie "RPS" mit Ihrem Papier, während Papier Rock schlägt.
Hier ist eine Liste von Notationen (Sie können 5 Literale verwenden, aber bitte in Ihrer Antwort angeben):
R : Rock
P : Paper
S : Scissor
L : Lizard
V : Spock
Hier ist eine Liste aller möglichen Ergebnisse:
winner('S', 'P') -> 'S'
winner('S', 'R') -> 'R'
winner('S', 'V') -> 'V'
winner('S', 'L') -> 'S'
winner('S', 'S') -> Tie
winner('P', 'R') -> 'P'
winner('P', 'V') -> 'P'
winner('P', 'L') -> 'L'
winner('P', 'S') -> 'S'
winner('P', 'P') -> Tie
winner('R', 'V') -> 'V'
winner('R', 'L') -> 'R'
winner('R', 'S') -> 'R'
winner('R', 'P') -> 'P'
winner('R', 'R') -> Tie
winner('L', 'R') -> 'R'
winner('L', 'V') -> 'L'
winner('L', 'S') -> 'S'
winner('L', 'P') -> 'L'
winner('L', 'L') -> Tie
winner('V', 'R') -> 'V'
winner('V', 'L') -> 'L'
winner('V', 'S') -> 'V'
winner('V', 'P') -> 'P'
winner('V', 'V') -> Tie
Das ist Code-Golf , so dass nur wenige Bytes gewinnen.
PS: Lass es mich wissen, wenn du mehr Testfälle brauchst.