En el juego Stratego, la mecánica principal del juego es cuando atacas la pieza de un oponente con la tuya. En este desafío, tu trabajo es simular una de estas batallas y decir quién sobrevive.
Especificaciones
Obtendrá como entrada un par de cuerdas que representan piezas de Stratego. Las piezas son una de ellas "S 1 2 3 4 5 6 7 8 9 10 B"
( S
es el espía, y B
son bombas). El primero del par será el atacante, y el segundo el atacado.
Estas son las reglas para determinar los resultados de una batalla:
- El número más alto es mejor que el número más bajo:
["4", "6"] -> ["6"]
. - Si ambos son la misma, entonces tanto troquel:
["7", "7"] -> []
. - Los espías son en la parte inferior, por debajo incluso
1
:["S", "2"] -> ["2"]
. - Sin embargo, si un espía ataca el
10
, entonces el espía gana:["S", "10"] -> ["S"]
. - Pero las reglas normales todavía se aplican si el
10
es el que ataca:["10", "S"] -> ["10"]
. - Si hay algo que ataca a una bomba, la bomba gana:
["5", "B"] -> ["B"]
. - Sin embargo, un minero (a
3
), puede desactivar una bomba:["3", "B"] -> ["3"]
. - Una bomba nunca será el atacante.
- Un observador (a
1
) puede atacar usando el mecanismo normal, pero también puede tratar de "adivinar" el rango del otro jugador, lo que puede denotarse con cualquier notación sensata. - Si aciertan, la otra pieza muere:
["1(5)", "5"] -> ["1"]
. - Si adivinan mal, no pasa nada:
["1(3)", "5"] -> ["1", "5"]
. - Observadores pueden detectar bombas:
["1(B)", "B"] -> ["1"]
.
Este es el código de golf , por lo que gana el código más corto en bytes .
(Puede usar los ejemplos allí arriba como casos de prueba, porque soy demasiado vago para ponerlos todos juntos en una lista).
code-golf
game
board-game
Maltysen
fuente
fuente
"Victory!"
para ellos, pero no quería complicar demasiado las cosas2
s, y no había1
s en mi juego Stratego ... (¿o simplemente se modifican para el desafío?)Respuestas:
Haskell, 131 bytes
Esta solución tiene la forma de una función infija
#
con tipoString -> String -> String
La entrada se acepta a través de los dos argumentos de cadena. El formato para la entrada de spotter es
1 x
dóndex
están las conjeturas. La salida se da como una cadena. En el caso de que ambas unidades sobrevivan, la cadena devuelta contiene ambas separadas por un espacio.Lamentablemente, mi solución original estaba defectuosa y la solución me costó algunos bytes.
fuente
Python,
180153 bytesLa función toma al atacante, defensor y, opcionalmente, la suposición del observador (si el atacante es el observador) como argumentos. Devuelve una matriz que contiene las piezas vivas que quedan.
Sin golf
Manifestación
https://repl.it/C6Oz/2
fuente
([a,d],[a])[g==d]
->[a,d][:(g!=d)+1]
Javascript ES6,
9886 bytesAcepta 3 args (atacante, defensor, adivinador).
Ejecuciones de ejemplo:
fuente
f("1","10") -> ["1","10"]
en lugar de"10"
.Javascript,
179166160 bytesEsta función toma 3 argumentos: el primero es el atacante, el segundo se usa para los observadores (su suposición) y el tercero es el defensor.
Mostrar fragmento de código
El icono de la espada proviene de clipart.co
fuente
TSQL,
162124 bytesGolfizado:
Sin golf:
Violín
fuente