introduzione
I giochi da tavolo sono un gioco classico tra i bambini, ma ci sono alcuni bambini che si annoiano giocando un gioco da tavolo passo dopo passo. Ora vogliono che il risultato sia mostrato prima di mettere le mani sul tavolo.
Sfida
Supponiamo che questo gioco da tavolo: >---#<---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
L'input consiste in una stringa con gli aspetti del gioco da tavolo sopra descritti e due matrici con alcuni valori (da 1
a 6
) in modo che entrambi i giocatori (bambino A
e bambino B
) abbiano ottenuto giocando un cubo.
Entrambi gli array avranno sempre la stessa lunghezza> = 1.
Il bambino A
inizia sempre il gioco.
È necessario produrre il bambino che ha ottenuto la fine o più vicino alla fine prima.
Se nessuno dei due ha la fine ed entrambi i bambini rimangono nella stessa posizione, stampare 0
o qualsiasi altro valore falso.
Se un array si esaurisce mentre l'altro ha tiri di dado rimanenti (a causa della mancanza di diversi turni su X di un giocatore), i rimanenti tiri di dado devono essere esauriti.
Per questa attività, è possibile creare un programma / funzione, che legge input da stdin, oppure accetta parametri / argomenti e output / return / stampa il figlio vincitore.
Dato che si tratta di code-golf , vince la risposta più breve in byte!
Esempio di input e output
Puoi anche usare diversi formati di input, ma dovresti solo prendere i valori di boardgame, kid-A e kid-B.
Esempio 1:
board: >---#<---X---<X<--#-$
kid-A: [3,6,6,5,2,1]
kid-B: [4,5,3,5,5,5]
output: A
spiegazione:
>---#<---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!
Esempio 2:
board: >-<<<<<$
kid-A: [1,2,3]
kid-B: [5,5,4]
output: 0
Esempio 3:
board: >-<-<#<-<-<-$
kid-A: [5,4,2]
kid-B: [1,1,1]
output: B
spiegazione:
>-<-<#<-<-<-$ # 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