Introdução
Os jogos de tabuleiro são um jogo clássico entre as crianças, mas há algumas que se sentem entediadas jogando um jogo de tabuleiro passo a passo. Agora eles querem que o resultado seja mostrado antes de colocar as mãos no tabuleiro.
Desafio
Suponha que este jogo de tabuleiro: >---#<---X---<X<--#-$
> means the start of the game
- means a position without danger
< means the player should return one step back
X means the player won't move next round
# means a portal where the player returns to the start position
$ the first player to get there or after there wins the game
A entrada consiste em uma seqüência de caracteres com os aspectos do jogo de tabuleiro descritos acima e duas matrizes com alguns valores (de 1
a 6
) para que os dois jogadores (garoto A
e garoto B
) tenham ao jogar um cubo.
Ambas as matrizes sempre terão o mesmo comprimento> = 1.
O garoto A
sempre começa o jogo.
Você deve produzir a criança que chegou ao fim ou mais perto primeiro.
Se nenhum deles chegou ao fim e os dois filhos permanecerem na mesma posição impressa 0
ou em qualquer outro valor falso.
Se um array acabar enquanto o outro tiver dados restantes (devido a um jogador perder vários turnos em Xs), os dados restantes devem ser usados.
Para esta tarefa, você pode criar um programa / função que leia as entradas do stdin ou utilize parâmetros / argumentos e produza / retorne / imprima o garoto vencedor.
Como se trata de código-golfe , a resposta mais curta em bytes vence!
Exemplo de entrada e saída
Você também pode usar diferentes formatos de entrada, mas deve considerar apenas os valores do jogo de tabuleiro, do garoto-A e do garoto-B.
Exemplo 1:
board: >---#<---X---<X<--#-$
kid-A: [3,6,6,5,2,1]
kid-B: [4,5,3,5,5,5]
output: A
Explicando:
>---#<---X---<X<--#-$ # both kids in position
B--A#<---X---<X<--#-$ # kid-A moved 3 to -
B--A#<---X---<X<--#-$ # kid-B moved 4 to # and returned home
B---#<---A---<X<--#-$ # kid-A moved 6 to X and will wait one round
B---#<---A---<X<--#-$ # kid-B moved 5 to < returned one to # and returned home
>--B#<---A---<X<--#-$ # kid-B moved 3 to -
>--B#<---X---<A<--#-$ # kid-A moved 6 to < returned one to X and will wait again
>---#<--BX---<A<--#-$ # kid-B moved 5 to -
>---#<---X--B<A<--#-$ # kid-B moved 5 to < returned one to -
>---#<---X--B<X<--#A$ # kid-A moved 5 to -
>---#<---X---<X<-B#A$ # kid-B moved 5 to -
>---#<---X---<X<-B#-$A # kid-A moved 2 and won the game!
Exemplo 2:
board: >-<<<<<$
kid-A: [1,2,3]
kid-B: [5,5,4]
output: 0
Exemplo 3:
board: >-<-<#<-<-<-$
kid-A: [5,4,2]
kid-B: [1,1,1]
output: B
Explicando:
>-<-<#<-<-<-$ # both kids in position
>-<-<#<-<-<-$ # kid-A moved 5 to # returned home
AB<-<#<-<-<-$ # kid-B moved 1 to -
>B<A<#<-<-<-$ # kid-A moved 4 to < returned one to -
>B<A<#<-<-<-$ # kid-B moved 1 to < returned one to -
AB<-<#<-<-<-$ # kid-A moved 2 to # returned home
AB<-<#<-<-<-$ # kid-B moved 1 to < returned one to -
Current position: (A:0, B:1) output: B
fonte
Respostas:
Perl,
188180 + 2 = 182 bytesWuhuu, tem que usar
goto
.Requer
-a
e-E
|-M5.010
:Versão um pouco não destruída:
fonte
Haskell, 142Uso:
Resultado:
Edit:
Jikes, eu jogava golfe até a morte; falha no último exemplo. Vou revivê-lo em breve.
fonte
import
s e acho que você precisará de alguns parafix
e<|>
, porque eles não estão no Prelude (ou existe uma versão que os inclua?).lambdabot-Haskell
ou similar e excluir a contagem de bytes para as importações.