Vous avez été embauché comme assistant de recherche et vous avez demandé de créer un petit programme qui construira des labyrinthes de rats. La boîte de rat est toujours 62x22 et a une entrée (a) et une sortie (A) pour le rat, comme ceci (entrée 1):
#######a######################################################
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
#################################################A############
Votre programme doit remplir la case avec des blocs (#) laissant un chemin pour le rat, comme ceci (sortie 1):
#######a######################################################
####### ######################################################
####### ######################################################
####### ######################################################
####### ######################################################
####### ############
################################################# ############
################################################# ############
################################################# ############
################################################# ############
################################################# ############
################################################# ############
################################################# ############
################################################# ############
################################################# ############
################################################# ############
################################################# ############
################################################# ############
################################################# ############
################################################# ############
################################################# ############
#################################################A############
C'est facile vous pensez! Vous commencez à écrire un petit programme, plein de confiance. Cependant, le scientifique principal a eu une nouvelle idée - il veut que deux rats parcourent le labyrinthe en même temps. Le Dr Rattanshnorter explique qu'ils ont différentes portes et différentes sorties (entrée 2):
#b#####a######################################################
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# B
# #
#################################################A############
Les rats ont été entraînés à se déplacer directement à travers les intersections croisées mais les intersections en T les laissent désespérément confus et invalideront l'expérience. Vous commencez votre nouvelle tâche plus complexe lorsque le bon docteur explique une dernière exigence: les rats sont sauvages les uns envers les autres, donc s'ils se voient à tout moment, un combat de rats éclatera et vous serez tous les deux devant le comité d'éthique. Vous réalisez maintenant que votre programme devrait sortir un labyrinthe quelque chose comme ça (sortie 2):
#b#####a######################################################
# ##### ######################################################
# ##### ######################################################
# ##### ####################################### ####
# ##### ####################################### ######### ####
# ##### ####### ####
# ############################################# # ####### ####
# ############################################# # ####### ####
# ############################################# # ####### ####
# ############################################# # ####### ####
# # ####### ####
################################################# ####### ####
################################################# ####### ####
################################################# ####### ####
################################################# ####### ####
################################################# ####### ####
################################################# ####### ####
################################################# ####### ####
################################################# ####### ####
################################################# ####### B
################################################# ############
#################################################A############
Au moment où le rat B atteint l'intersection, le rat A voyagera dans le couloir pour sortir A et le combat de rats sera évité.
Règles:
Votre programme doit lire (STDIN ou fichier) une entrée comme celles ci-dessus, et produire (STDOUT ou fichier) les mêmes données sauf que de nombreux espaces seront désormais des hachages (#). Vous pouvez remplacer n'importe quel caractère unique (tel que
;
) au lieu de\n
dans la chaîne d'entrée, mais la chaîne de sortie nécessite toujours des\n
caractères. MIS À JOURUne voie de rat doit avoir une largeur de caractère, sauf pour les intersections croisées (chaque espace doit avoir zéro ou deux caractères orthogonalement adjacents
#
). Chaque rat doit avoir un chemin unique clair, sauf pour les intersections croisées. Aucune intersection en T n'est autorisée.Les rats sont libérés simultanément et se déplacent à un rythme constant. A aucun moment, deux rats ou plus ne devraient se voir (être dans la même colonne ou ligne sans
#
caractères entre les deux).Si aucune solution n'est possible (comme des points d'entrée adjacents), imprimez
Impossible\n
et quittez.Les entrées et les sorties peuvent être de n'importe quel côté, mais elles ne seront jamais aux coins.
Si une entrée et une sortie appariées sont adjacentes (par exemple:)
##aA##
, le rat ne peut pas aller directement dea
àA
. Il doit y avoir une petite section de couloir de 2 espaces à l'intérieur de la zone du labyrinthe.Au tour où un rat atteint son point de sortie (ou à tout moment par la suite), il n'est plus visible pour les autres rats.
Votre programme peut être conçu pour calculer des labyrinthes pour 1, 2, jusqu'à 26 rats.
Les failles standard ne sont pas autorisées.
But:
Avec votre solution, indiquez combien de rats par labyrinthe (N) votre programme peut résoudre. Votre score est la longueur de votre code en octets divisée par ce nombre N.
Veuillez inclure un exemple de sortie dans votre réponse afin que nous puissions voir ce que votre programme produit.