Einführung
Brettspiele sind ein klassisches Spiel zwischen Kindern, aber es gibt einige Kinder, denen es langweilig ist, Schritt für Schritt ein Brettspiel zu spielen. Jetzt möchten sie, dass das Ergebnis angezeigt wird, bevor sie ihre Hände auf das Brett legen.
Herausforderung
Angenommen, dieses Brettspiel: >---#<---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
Die Eingabe besteht aus einer Zeichenfolge mit den oben beschriebenen Aspekten des Brettspiels und zwei Arrays mit einigen Werten (von 1
bis 6
), die beide Spieler (Kind A
und Kind B
) beim Spielen eines Würfels erhalten haben.
Beide Arrays haben immer die gleiche Länge> = 1.
Das Kind A
startet immer das Spiel.
Sie müssen zuerst das Kind ausgeben, das das Ende oder näher am Ende hat.
Wenn keiner das Ende erreicht hat und beide Kinder an der gleichen Position bleiben, drucken Sie 0
oder einen anderen falschen Wert.
Wenn ein Array ausgeht, während das andere verbleibende Würfelwürfe hat (da ein Spieler mehrere Runden auf Xs verpasst), sollten die verbleibenden Würfelwürfe aufgebraucht sein.
Für diese Aufgabe können Sie ein Programm / eine Funktion erstellen, das die Eingabe von stdin liest, oder Parameter / Argumente verwenden und das Gewinnerkind ausgeben / zurückgeben / drucken.
Da dies Code-Golf ist , gewinnt die kürzeste Antwort in Bytes!
Beispiel für Ein- und Ausgabe
Sie können auch verschiedene Eingabeformate verwenden, aber Sie sollten nur die Werte für Brettspiel, Kid-A und Kid-B verwenden.
Beispiel 1:
board: >---#<---X---<X<--#-$
kid-A: [3,6,6,5,2,1]
kid-B: [4,5,3,5,5,5]
output: A
Erklären:
>---#<---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!
Beispiel 2:
board: >-<<<<<$
kid-A: [1,2,3]
kid-B: [5,5,4]
output: 0
Beispiel 3:
board: >-<-<#<-<-<-$
kid-A: [5,4,2]
kid-B: [1,1,1]
output: B
Erklären:
>-<-<#<-<-<-$ # 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
quelle
Antworten:
Perl,
188180 + 2 = 182 BytesWuhuu, muss benutzen
goto
.Benötigt
-a
und-E
|-M5.010
::Etwas ungolfed Version:
quelle
Haskell, 142Verwendung:
Ausgabe:
Edit:
Jikes, ich habe es zu Tode gespielt; es schlägt für das letzte Beispiel fehl. Ich werde es in Kürze wiederbeleben.
quelle
import
s und ich denke, Sie brauchen einige fürfix
und<|>
, weil sie nicht im Prelude sind (oder gibt es eine Version, die sie enthält?).lambdabot-Haskell
oder ähnliches aufrufen und die Anzahl der Bytes für die Importe ausschließen können.