Creare una funzione che prenderà due stringhe come input e restituirà un singolo output per il risultato. Vince la risposta più popolare.
Le regole di Rock-paper-scissors-lizard-Spock sono:
- Le forbici tagliano la carta
- La carta copre il rock
- La roccia schiaccia la lucertola
- La lucertola avvelena Spock
- Spock rompe le forbici
- Le forbici decapitano la lucertola
- La lucertola mangia la carta
- La carta smentisce Spock
- Spock vaporizza la roccia
- Il rock rompe le forbici
L'output per ogni possibile caso di input è:
winner('Scissors', 'Paper') -> 'Scissors cut Paper'
winner('Scissors', 'Rock') -> 'Rock breaks Scissors'
winner('Scissors', 'Spock') -> 'Spock smashes Scissors'
winner('Scissors', 'Lizard') -> 'Scissors decapitate Lizard'
winner('Scissors', 'Scissors') -> 'Scissors tie Scissors'
winner('Paper', 'Rock') -> 'Paper covers Rock'
winner('Paper', 'Spock') -> 'Paper disproves Spock'
winner('Paper', 'Lizard') -> 'Lizard eats Paper'
winner('Paper', 'Scissors') -> 'Scissors cut Paper'
winner('Paper', 'Paper') -> 'Paper ties Paper'
winner('Rock', 'Spock') -> 'Spock vaporizes Rock'
winner('Rock', 'Lizard') -> 'Rock crushes Lizard'
winner('Rock', 'Scissors') -> 'Rock breaks Scissors'
winner('Rock', 'Paper') -> 'Paper covers Rock'
winner('Rock', 'Rock') -> 'Rock ties Rock'
winner('Lizard', 'Rock') -> 'Rock crushes Lizard'
winner('Lizard', 'Spock') -> 'Lizard poisons Spock'
winner('Lizard', 'Scissors') -> 'Scissors decapitate Lizard'
winner('Lizard', 'Paper') -> 'Lizard eats Paper'
winner('Lizard', 'Lizard') -> 'Lizard ties Lizard'
winner('Spock', 'Rock') -> 'Spock vaporizes Rock'
winner('Spock', 'Lizard') -> 'Lizard poisons Spock'
winner('Spock', 'Scissors') -> 'Spock smashes Scissors'
winner('Spock', 'Paper') -> 'Paper disproves Spock'
winner('Spock', 'Spock') -> 'Spock ties Spock'
Sfida extra suggerita da @Sean Cheshire: consentire elenchi personalizzati, come quelli di questo sito. Con l'elenco n-item, l'oggetto perde in (n-1) / 2 precedente e vince sul (n-1) / 2 seguente