No jogo Stratego, a principal mecânica do jogo é quando você ataca a peça de um oponente com a sua. Nesse desafio, seu trabalho é simular uma dessas batalhas e dizer quem sobrevive.
Especificações
Você receberá como entrada um par de strings representando as peças do Stratego. As peças são uma das "S 1 2 3 4 5 6 7 8 9 10 B"
( S
é o Spy e B
são bombas). O primeiro do par será o atacante e o segundo o atacado.
Aqui estão as regras para determinar os resultados de uma batalha:
- O número mais elevado bate o menor número:
["4", "6"] -> ["6"]
. - Se ambos são os mesmos, então ambos morrer:
["7", "7"] -> []
. - Spies estão na parte inferior, por baixo mesmo
1
:["S", "2"] -> ["2"]
. - No entanto, se um espião ataca o
10
, em seguida, o espião ganha:["S", "10"] -> ["S"]
. - Mas as regras normais ainda se aplicam se o
10
é o ataque:["10", "S"] -> ["10"]
. - Se alguma coisa ataca uma bomba, a bomba ganha:
["5", "B"] -> ["B"]
. - No entanto, um mineiro (a
3
), pode desarmar uma bomba:["3", "B"] -> ["3"]
. - Uma bomba nunca será o atacante.
- Um observador (a
1
) pode atacar usando o mecanismo normal, mas também pode tentar "adivinhar" a classificação do outro jogador, o que pode ser indicado com qualquer notação sensata. - Se eles adivinhar corretamente, o outro pedaço morre:
["1(5)", "5"] -> ["1"]
. - Se errar, nada acontece:
["1(3)", "5"] -> ["1", "5"]
. - Spotters pode detectar bombas:
["1(B)", "B"] -> ["1"]
.
Isso é código-golfe , então o código mais curto em bytes vence!
(Você pode usar os exemplos lá em cima como casos de teste, porque tenho preguiça de reuni-los todos em uma lista).
code-golf
game
board-game
Maltysen
fonte
fonte
"Victory!"
para-los, mas não queria coisas complicar demais2
s, e não houve1
s no meu jogo Stratego ... (ou são apenas modificado para o propósito do desafio?)Respostas:
Haskell, 131 bytes
Esta solução está na forma de uma função infix
#
com o tipoString -> String -> String
A entrada é aceita através dos dois argumentos de cadeia. O formato da entrada do observador é
1 x
ondex
está o palpite. A saída é fornecida como uma sequência. No caso em que ambas as unidades sobrevivem, a sequência retornada contém as duas separadas por um espaço.Infelizmente, minha solução original foi corrigida e a correção me custou alguns bytes.
fonte
Python,
180153 bytesA função assume o atacante, o defensor e, opcionalmente, o palpite do observador (se o atacante for o observador) como argumentos. Retorna uma matriz contendo as peças vivas que permanecem.
Ungolfed
Demo
https://repl.it/C6Oz/2
fonte
([a,d],[a])[g==d]
->[a,d][:(g!=d)+1]
Javascript ES6,
9886 bytesAceita 3 args (atacante, defensor, palpite do observador).
Exemplo é executado:
fonte
f("1","10") -> ["1","10"]
ao invés de"10"
.Javascript,
179166160 bytesEsta função recebe 3 argumentos - o primeiro é o atacante, o segundo é usado para observadores (o palpite) e o terceiro é o defensor.
Mostrar snippet de código
O ícone espada é de cliparts.co
fonte
TSQL,
162124 bytesGolfe:
Ungolfed:
Violino
fonte