Dare una sfida che coinvolge un riferimento a Star Trek subito dopo il 4 maggio può essere visto di buon occhio, ma ecco qui.
Tu, Luke, Anakin, Palpatine, Yoda e Han Solo siete coinvolti in un folle torneo di Rock, Paper, Scissor, Lizard, Spock.
Il trucco qui è che ti è permesso usare solo un ordine di mosse fisso. Se il tuo ordine è "R", allora devi usare Rock, fino a quando non perdi o vinci contro tutti. Se il tuo ordine è RRV, devi usare 2 Rocks seguiti da uno Spock e continuare a ripetere fino a quando non hai vinto o perso.
Luke, Anakin, Palpatine, Yoda e Han Solo hanno inviato i loro rispettivi ordini e tu, essendo un hacker esperto, hai messo le mani su ciascuno dei loro ordini!
Con questa conoscenza, devi progettare il tuo ordine per il torneo. Dal momento che tutti vogliono vincere, si desidera creare un ordine in modo tale da vincere il torneo battendo tutti. Ma questo potrebbe non essere possibile in tutte le circostanze.
Nel caso ci sia un possibile ordine vincente, stampalo. Se non puoi vincere, stampa -1 (o 0 o Falso o "impossibile")
Input : un elenco di 5 ordini
Output : un singolo ordine o -1
Ingresso campione 1
R
P
S
L
V
Uscita campione 1
-1
Spiegazione 1
Indipendentemente da ciò che giochi nella tua prima mossa, ci sarà almeno una persona che ti batte, quindi non è possibile per te vincere.
Ingresso campione 2
RPS
RPP
R
SRR
L
Uscita campione 2
RPSP
Spiegazione 2
Una volta che giochi a Rock nella tua prima mossa, finisci per battere "L" e "SRR" e leghi contro il resto. Questo perché Lizard e Scissors perdono contro il Rock. La prossima volta che giocherai a Paper, batterai "R" e legherai contro i restanti 2. Questo perché Rock perde su Paper. Quando giocherai a Scissors, vincerai contro "RPP" mentre Scissor batte Paper.
Infine, batterai "RPS" con il tuo Paper mentre Paper batte Rock.
Ecco un elenco di notazioni (puoi usare 5 letterali, ma specifica nella tua risposta):
R : Rock
P : Paper
S : Scissor
L : Lizard
V : Spock
Ecco un elenco di tutti i possibili risultati:
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
Questo è code-golf , quindi vincono meno byte.
PS: Fammi sapere se hai bisogno di più casi di test.