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