Dans le jeu Stratego, le mécanisme de jeu principal consiste à attaquer la pièce d'un adversaire avec la vôtre. Dans ce défi, votre travail consiste à simuler l'une de ces batailles et à dire qui survit.
Spécifications
Vous obtiendrez en entrée une paire de cordes représentant des pièces Stratego. Les pièces sont l'une des "S 1 2 3 4 5 6 7 8 9 10 B"
( S
est l'espion, et B
sont des bombes). Le premier de la paire sera l'attaquant et le second l'attaquant.
Voici les règles pour déterminer les résultats d'une bataille:
- Le plus grand nombre bat le nombre inférieur:
["4", "6"] -> ["6"]
. - Si les deux sont identiques, meurent tous les deux:
["7", "7"] -> []
. - Spies sont en bas, au- dessous même
1
:["S", "2"] -> ["2"]
. - Cependant, si un espion attaque le
10
, l'espion gagne:["S", "10"] -> ["S"]
. - Mais les règles normales appliquent toujours si le
10
est celui attaquant:["10", "S"] -> ["10"]
. - Si quelque chose attaque une bombe, la bombe gagne:
["5", "B"] -> ["B"]
. - Toutefois, un mineur (a
3
), peut désamorcer une bombe:["3", "B"] -> ["3"]
. - Une bombe ne sera jamais l'attaquant.
- Un observateur (a
1
) peut attaquer en utilisant le mécanisme normal, mais il peut également essayer de "deviner" le rang de l'autre joueur, qui peut être indiqué par n'importe quelle notation saine. - S'ils devinent correctement, l'autre pièce meurt:
["1(5)", "5"] -> ["1"]
. - S'ils devinent mal, rien ne se passe:
["1(3)", "5"] -> ["1", "5"]
. - Spotters peuvent repérer les bombes:
["1(B)", "B"] -> ["1"]
.
C'est le code-golf , donc le code le plus court en octets gagne!
(Vous pouvez utiliser les exemples là-haut comme cas de test, car je suis trop paresseux pour les rassembler dans une seule liste).
code-golf
game
board-game
Maltysen
la source
la source
"Victory!"
pour eux, mais je ne voulais pas trop compliquer les choses2
s, et il n'y avait pas de1
s dans mon jeu Stratego ... (ou sont-ils juste modifiés pour le but du défi?)Réponses:
Haskell, 131 octets
Cette solution se présente sous la forme d'une fonction infixe
#
de typeString -> String -> String
L'entrée est acceptée via les deux arguments de chaîne. Le format de l'entrée du spotter est
1 x
oùx
est la supposition. La sortie est donnée sous forme de chaîne. Dans le cas où les deux unités survivent, la chaîne retournée contient les deux séparées par un espace.Ma solution d'origine a malheureusement été buggée et le correctif m'a coûté quelques octets.
la source
Python,
180153 octetsLa fonction prend l'attaquant, le défenseur et éventuellement la supposition du spotter (si l'attaquant est le spotter) comme arguments. Il renvoie un tableau contenant les morceaux vivants qui restent.
Non golfé
Démo
https://repl.it/C6Oz/2
la source
([a,d],[a])[g==d]
->[a,d][:(g!=d)+1]
Javascript ES6,
9886 octetsAccepte 3 arguments (attaquant, défenseur, devineur).
L'exemple s'exécute:
la source
f("1","10") -> ["1","10"]
plutôt que"10"
.Javascript,
179166160 octetsCette fonction prend 3 arguments - le premier est l'attaquant, le second est utilisé pour les spotters (leur supposition) et le troisième est le défenseur.
Afficher l'extrait de code
L'icône d'épée vient de cliparts.co
la source
TSQL,
162124 octetsGolfé:
Non golfé:
Violon
la source