Zostałeś zatrudniony jako asystent naukowy i poproszony o stworzenie małego programu, który zbuduje labirynty szczurów. Pudełko szczura ma zawsze wymiary 62 x 22 i ma wejście (a) i wyjście (A) dla szczura, takie jak to (wejście 1):
#######a######################################################
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
#################################################A############
Twój program musi wypełnić pole blokami (#) pozostawiając ścieżkę dla szczura, tak jak to (wynik 1):
#######a######################################################
####### ######################################################
####### ######################################################
####### ######################################################
####### ######################################################
####### ############
################################################# ############
################################################# ############
################################################# ############
################################################# ############
################################################# ############
################################################# ############
################################################# ############
################################################# ############
################################################# ############
################################################# ############
################################################# ############
################################################# ############
################################################# ############
################################################# ############
################################################# ############
#################################################A############
To łatwe, myślisz! Zaczynasz pisać mały, pełen zaufania program. Jednak główny naukowiec wpadł na nowy pomysł - chce, aby dwa szczury poruszały się jednocześnie po labiryncie. Dr Rattanshnorter wyjaśnia, że mają różne drzwi i różne wyjścia (wkład 2):
#b#####a######################################################
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# B
# #
#################################################A############
Szczury zostały wytrenowane, aby poruszać się prosto przez skrzyżowania, ale przecięcia w T pozostawiają je beznadziejnie zdezorientowane i unieważnią eksperyment. Zaczynasz od nowego, bardziej złożonego zadania, gdy dobry Doktor wyjaśnia jeden końcowy wymóg: szczury są wobec siebie dzikie, więc jeśli zobaczą się w dowolnym momencie, wybuchnie walka na szczurach i oboje staniecie przed komisją etyki. Teraz zdajesz sobie sprawę, że twój program powinien wypisać labirynt coś takiego (wynik 2):
#b#####a######################################################
# ##### ######################################################
# ##### ######################################################
# ##### ####################################### ####
# ##### ####################################### ######### ####
# ##### ####### ####
# ############################################# # ####### ####
# ############################################# # ####### ####
# ############################################# # ####### ####
# ############################################# # ####### ####
# # ####### ####
################################################# ####### ####
################################################# ####### ####
################################################# ####### ####
################################################# ####### ####
################################################# ####### ####
################################################# ####### ####
################################################# ####### ####
################################################# ####### ####
################################################# ####### B
################################################# ############
#################################################A############
Zanim szczur B dotrze do skrzyżowania, szczur A będzie podróżował korytarzem do wyjścia A i uniknie się walki ze szczurami.
Zasady:
Twój program powinien wczytywać (STDIN lub plik) dane wejściowe takie jak te powyżej i wyprowadzać (STDOUT lub plik) te same dane, z tym wyjątkiem, że wiele spacji będzie teraz skrótami (#). Możesz zastąpić dowolny pojedynczy znak (np.
;
) Zamiast\n
w ciągu wejściowym, ale ciąg wyjściowy nadal wymaga\n
znaków. AKTUALIZACJAŚcieżka szczura musi mieć szerokość jednego znaku, z wyjątkiem skrzyżowań (każde miejsce musi mieć zero lub dwa prostopadle sąsiadujące
#
znaki). Każdy szczur musi mieć wyraźną pojedynczą ścieżkę, z wyjątkiem skrzyżowań. Niedozwolone są przecięcia w kształcie litery T.Szczury są wypuszczane jednocześnie i poruszają się ze stałą prędkością. W żadnym momencie dwa lub więcej szczurów nie powinno się widzieć (znajdować się w tej samej kolumnie lub rzędzie bez jednego lub więcej
#
znaków pomiędzy nimi).Jeśli żadne rozwiązanie nie jest możliwe (takie jak sąsiednie punkty wejścia), wydrukuj
Impossible\n
i wyjdź.Wejścia i wyjścia mogą być po każdej stronie, jednak nigdy nie będą na rogach.
Jeśli dopasowane wejście i wyjście sąsiadują ze sobą (np .
##aA##
:), szczur nie może przejść bezpośrednio oda
doA
. W obszarze labiryntu musi znajdować się mały 2-kosmiczny korytarz.W turze, w której szczur osiąga punkt wyjścia (lub w dowolnym późniejszym czasie), nie jest już widoczny dla innych szczurów.
Twój program może być zaprojektowany do obliczania labiryntów dla 1, 2, do 26 szczurów.
Standardowe luki są niedozwolone.
Wynik:
Za pomocą swojego rozwiązania określ, ile szczurów na labirynt (N) może rozwiązać Twój program. Twój wynik to długość kodu w bajtach podzielona przez tę liczbę N.
W odpowiedzi podaj przykładowy wynik, abyśmy mogli zobaczyć, co produkuje Twój program.