Ваша программа должна принимать многострочную строку, например так:
#############
# #
# p #
# #
#############
p
является игроком и #
является блоком.
Теперь под этим в терминале должна быть строка ввода, гласящая:
How do you want to move?
Если игрок печатает, l
он должен идти влево, когда нет блока, иначе, когда есть блок, он не может пройти и, конечно, не двигается, теперь выход в терминале должен быть обновлен ( и предыдущий вывод очищен / перезаписан):
#############
# #
# p #
# #
#############
Он может печатать l
слева, r
справа, u
вверх и d
вниз.
Ввод всегда будет многострочным, но не всегда будет дополняться пробелами в идеальный прямоугольник. Кроме того, хэши могут находиться в любом месте строки и не всегда будут связаны друг с другом. Например:
## ##
# #
## p
#
это действительное подземелье. (обратите внимание на отсутствие пробелов в каждой строке)
Если игрок выходит за пределы строки, он не должен отображаться. Но если он вернется позже, он должен появиться снова.
И границы «за пределами» строки являются length(longest_line)
по number_of_lines
прямоугольнику, так что даже если одна строка не дополняется пробелами справа, что место не рассматривается вне границ. Пример использования более ранней темницы:
## ##
# #p
##
#
Во второй строке не было пробела, где сейчас p, но это не имеет значения.
Наконец, ваша программа должна зацикливаться на вечность, принимая ввод.
Контрольные примеры
Тестовый пример 1:
####
# p#
#
####
How do you want to move?
d
####
# #
# p
####
Контрольный пример 2:
####
p#
#
####
How do you want to move?
l
####
p #
#
####
How do you want to move?
d
####
#
p #
####
How do you want to move?
l
####
#
p #
####
How do you want to move?
l
####
#
#
####
How do you want to move?
r
####
#
p #
####
Конечно, они не завершены. Ваш код должен зацикливаться вечно и очищать экран между каждым выходом .
Ваш вывод может запрашивать ввод как How do you want to move?\n<input>
или How do you want to move?<input>
(т.е. вам не нужно вводить пустую строку), и вам не нужна пустая строка между последней строкой подземелья и подсказкой. (однако они не могут быть на одной линии)
Стандартные лазейки запрещены! Это код-гольф, поэтому выигрывает самый короткий код в байтах!
l
, r
, u
, или d
) может быть что угодно, а не только «Как вы хотите переместить»? Это на самом деле не влияет на ответы, кроме гольфистости.