Introducción
Los juegos de mesa son un juego clásico entre niños, pero hay algunos niños que se sienten aburridos jugando un juego de mesa paso a paso. Ahora quieren que se muestre el resultado antes de poner sus manos en el tablero.
Desafío
Supongamos que este juego de mesa: >---#<---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
La entrada consiste en una cadena con los aspectos del juego de mesa descritos anteriormente y dos matrices con algunos valores (de 1
a 6
) para que ambos jugadores (niño A
y niño B
) obtuvieran al jugar un cubo.
Ambas matrices siempre tendrán la misma longitud> = 1.
El niño A
siempre comienza el juego.
Debes dar salida al chico que obtuvo el final o más cerca del final primero.
Si ninguno de los dos obtuvo el final y ambos niños permanecen en la misma posición, imprimir 0
o cualquier otro valor falso.
Si un conjunto se agota mientras que el otro tiene tiradas de dados restantes (debido a que un jugador pierde varios turnos en Xs), las tiradas de dados restantes se deben usar.
Para esta tarea, puede crear un programa / función, que lea la entrada de stdin, o tomar parámetros / argumentos y generar / devolver / imprimir el niño ganador.
Como se trata de código de golf , ¡la respuesta más corta en bytes gana!
Ejemplo de entrada y salida
También puede usar diferentes formatos de entrada, pero solo debe tomar los valores de juego de mesa, kid-A y kid-B.
Ejemplo 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!
Ejemplo 2
board: >-<<<<<$
kid-A: [1,2,3]
kid-B: [5,5,4]
output: 0
Ejemplo 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
fuente
Respuestas:
Perl,
188180 + 2 = 182 bytesWuhuu, tengo que usar
goto
.Requiere
-a
y-E
|-M5.010
:Versión un tanto sin golf:
fuente
Haskell, 142Uso:
Salida:
Editar:
Chistes, lo jugué hasta la muerte; falla para el último ejemplo. Lo reviviré en breve.
fuente
import
s y creo que necesitará algunos parafix
y<|>
, porque no están en Prelude (¿o hay una versión que los incluya?).lambdabot-Haskell
o similar y excluir el recuento de bytes para las importaciones.