Вступление
Настольные игры - это классическая игра для детей, но есть дети, которым скучно играть в настольную игру шаг за шагом. Теперь они хотят, чтобы результат был показан до того, как они положат руки на доску.
Вызов
Предположим, это настольная игра: >---#<---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
Входные данные состоят из строки с описанными выше аспектами настольной игры и двух массивов с некоторыми значениями (от 1
до 6
) для того, чтобы оба игрока (ребенок A
и ребенок B
) получили при игре в один куб.
Оба массива всегда будут иметь одинаковую длину> = 1.
Малыш A
всегда начинает игру.
Вы должны вывести ребенка, который получил конец или ближе к концу первым.
Если ни один из них не получил конца, и оба ребенка остаются в одной позиции, напечатайте 0
или любое другое ложное значение.
Если один массив заканчивается, а у другого остаются оставшиеся броски костей (из-за того, что один игрок пропустил несколько ходов по X), оставшиеся броски костей следует использовать.
Для этой задачи вы можете создать программу / функцию, которая будет читать ввод из stdin, или принимать параметры / аргументы и выводить / возвращать / распечатывать информацию о победителе.
Поскольку это код-гольф , выигрывает кратчайший ответ в байтах!
Пример ввода и вывода
Вы также можете использовать разные форматы ввода, но вы должны принимать только значения настольной игры, значения kid-A и kid-B.
Пример 1:
board: >---#<---X---<X<--#-$
kid-A: [3,6,6,5,2,1]
kid-B: [4,5,3,5,5,5]
output: A
Разъяснение:
>---#<---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!
Пример 2:
board: >-<<<<<$
kid-A: [1,2,3]
kid-B: [5,5,4]
output: 0
Пример 3:
board: >-<-<#<-<-<-$
kid-A: [5,4,2]
kid-B: [1,1,1]
output: B
Разъяснение:
>-<-<#<-<-<-$ # 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
источник
Ответы:
Perl,
188180 + 2 = 182 байтаУхууу, надо использовать
goto
.Требуется
-a
и-E
|-M5.010
:Несколько неглёвая версия:
источник
Хаскелл, 142Использование:
Выход:
Редактировать:
Jikes, я играл в гольф до смерти; это терпит неудачу для последнего примера. Я оживлю это в ближайшее время.
источник
import
s, и я думаю, что вам понадобятся некоторые дляfix
и<|>
, потому что они не включены в Prelude (или есть версия, которая включает их?).lambdabot-Haskell
или аналогичный и исключить количество байтов для импорта.