Вы были наняты в качестве научного сотрудника и попросили создать небольшую программу, которая будет создавать лабиринты для крыс. Крысиный ящик всегда 62х22 и имеет вход (а) и выход (А) для крысы, вот так (вход 1):
#######a######################################################
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
#################################################A############
Ваша программа должна заполнить поле блоками (#), оставляя путь для крысы, вот так (вывод 1):
#######a######################################################
####### ######################################################
####### ######################################################
####### ######################################################
####### ######################################################
####### ############
################################################# ############
################################################# ############
################################################# ############
################################################# ############
################################################# ############
################################################# ############
################################################# ############
################################################# ############
################################################# ############
################################################# ############
################################################# ############
################################################# ############
################################################# ############
################################################# ############
################################################# ############
#################################################A############
Это легко, вы думаете! Вы начинаете писать небольшую программу, полную уверенности. Однако у Принципиального ученого появилась новая идея - он хочет, чтобы две крысы одновременно перемещались по лабиринту. Доктор Раттаншнортер объясняет, что у них разные двери и разные выходы (вход 2):
#b#####a######################################################
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# B
# #
#################################################A############
Крыс обучали двигаться прямо через перекрестки, но Т-образные перекрестки оставляют их безнадежно запутанными и лишают законной силы эксперимент. Вы начинаете свою новую более сложную задачу, когда хороший Доктор объясняет одно последнее требование: крысы дикие друг с другом, поэтому, если они увидят друг друга в какой-то момент, начнется драка крыс, и вы оба окажетесь перед доской этики. Теперь вы понимаете, что ваша программа должна выводить лабиринт примерно так (вывод 2):
#b#####a######################################################
# ##### ######################################################
# ##### ######################################################
# ##### ####################################### ####
# ##### ####################################### ######### ####
# ##### ####### ####
# ############################################# # ####### ####
# ############################################# # ####### ####
# ############################################# # ####### ####
# ############################################# # ####### ####
# # ####### ####
################################################# ####### ####
################################################# ####### ####
################################################# ####### ####
################################################# ####### ####
################################################# ####### ####
################################################# ####### ####
################################################# ####### ####
################################################# ####### ####
################################################# ####### B
################################################# ############
#################################################A############
К тому времени, когда крыса B достигнет перекрестка, крыса A будет двигаться по коридору, чтобы выйти из A, и бой с крысой будет предотвращен.
Правила:
Ваша программа должна прочитать (STDIN или файл) входные данные, подобные приведенным выше, и вывести (STDOUT или файл) те же данные, за исключением того, что многие пробелы теперь будут хешами (#). Вы можете заменить любой отдельный символ (например,
;
) вместо\n
входной строки, но для выходной строки все еще требуются\n
символы. ОБНОВЛЕНОПуть крысы должен быть шириной в один символ, за исключением перекрестных пересечений (каждый пробел должен иметь ноль или два соседних с ортогональными
#
символами символа). У каждой крысы должен быть четкий отдельный путь, за исключением перекрестных пересечений. Т-образные перекрестки не допускаются.Крысы выпускаются одновременно и движутся с постоянной скоростью. Никогда две и более крысы не должны видеть друг друга (находиться в одном столбце или строке без одного или нескольких
#
символов между ними).Если решение невозможно (например, смежные точки входа), распечатайте
Impossible\n
и выйдите.Входы и выходы могут быть с любой стороны, однако они никогда не будут на углах.
Если совпадающие вход и выход находятся рядом (например:)
##aA##
, крыса не может перейти непосредственно отa
кA
. Внутри лабиринта должен быть небольшой 2-х пространственный коридор.На ходу, когда крыса достигает своей точки выхода (или в любое время после этого), она больше не видна другим крысам.
Ваша программа может быть рассчитана на вычисление лабиринтов для 1, 2, до 26 крыс.
Стандартные лазейки запрещены.
Гол:
Используя ваше решение, укажите, сколько крыс на лабиринт (N) может решить ваша программа. Ваша оценка - это длина вашего кода в байтах, деленная на это число N.
Пожалуйста, включите пример вывода в ваш ответ, чтобы мы могли увидеть, что производит ваша программа.