Sie wurden als wissenschaftlicher Mitarbeiter eingestellt und gebeten, ein kleines Programm für den Bau von Rattenlabyrinthen zu erstellen. Die Rattenbox ist immer 62x22 und hat einen Eingang (a) und einen Ausgang (A) für die Ratte, wie folgt (Eingang 1):
#######a######################################################
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
#################################################A############
Ihr Programm muss die Box mit Blöcken (#) füllen und einen Pfad für die Ratte hinterlassen, wie folgt (Ausgabe 1):
#######a######################################################
####### ######################################################
####### ######################################################
####### ######################################################
####### ######################################################
####### ############
################################################# ############
################################################# ############
################################################# ############
################################################# ############
################################################# ############
################################################# ############
################################################# ############
################################################# ############
################################################# ############
################################################# ############
################################################# ############
################################################# ############
################################################# ############
################################################# ############
################################################# ############
#################################################A############
Das ist einfach, denkst du! Sie schreiben ein kleines Programm voller Selbstvertrauen. Der Principle Scientist hat jedoch eine neue Idee: Er möchte, dass zwei Ratten gleichzeitig durch das Labyrinth navigieren. Dr. Rattanshnorter erklärt, dass sie unterschiedliche Türen und unterschiedliche Ausgänge haben (Eingang 2):
#b#####a######################################################
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# B
# #
#################################################A############
Die Ratten wurden darauf trainiert, sich gerade durch Kreuzungen zu bewegen, aber T-Kreuzungen lassen sie hoffnungslos verwirrt und machen das Experiment ungültig. Sie beginnen mit Ihrer neuen, komplexeren Aufgabe, wenn der gute Doktor eine letzte Anforderung erklärt: Die Ratten sind wild zueinander. Wenn sie sich also zu irgendeinem Zeitpunkt sehen, bricht ein Rattenkampf aus und Sie befinden sich beide vor der Ethikkommission. Sie erkennen jetzt, dass Ihr Programm ein Labyrinth wie das folgende ausgeben sollte (Ausgabe 2):
#b#####a######################################################
# ##### ######################################################
# ##### ######################################################
# ##### ####################################### ####
# ##### ####################################### ######### ####
# ##### ####### ####
# ############################################# # ####### ####
# ############################################# # ####### ####
# ############################################# # ####### ####
# ############################################# # ####### ####
# # ####### ####
################################################# ####### ####
################################################# ####### ####
################################################# ####### ####
################################################# ####### ####
################################################# ####### ####
################################################# ####### ####
################################################# ####### ####
################################################# ####### ####
################################################# ####### B
################################################# ############
#################################################A############
Wenn Ratte B die Kreuzung erreicht, fährt Ratte A den Korridor entlang bis zum Ausgang A und der Rattenkampf wird vermieden.
Regeln:
Ihr Programm sollte eine Eingabe wie oben einlesen (STDIN oder Datei) und dieselben Daten ausgeben (STDOUT oder Datei), außer dass viele Leerzeichen jetzt als Hashes (#) dargestellt werden. Sie können jedes einzelne Zeichen (z. B.
;
) anstelle\n
der Eingabezeichenfolge einsetzen, die Ausgabezeichenfolge erfordert jedoch weiterhin\n
Zeichen. AKTUALISIERTEin Rattenpfad muss mit Ausnahme von Kreuzungspunkten eine Zeichenbreite haben (jedes Leerzeichen muss null oder zwei orthogonal nebeneinander haben)
#
Zeichen enthalten). Jede Ratte muss einen freien Weg haben, mit Ausnahme von Kreuzungspunkten. Es sind keine T-Kreuzungen erlaubt.Die Ratten werden gleichzeitig freigesetzt und bewegen sich mit konstanter Geschwindigkeit. Zu keinem Zeitpunkt sollten sich zwei oder mehr Ratten sehen (in derselben Spalte oder Zeile ohne ein oder mehrere
#
dazwischenliegende Zeichen).Wenn keine Lösung möglich ist (z. B. benachbarte Eingangspunkte), drucken Sie
Impossible\n
und beenden Sie.Ein- und Ausgänge können an beliebigen Seiten sein, sie werden jedoch niemals an den Ecken sein.
Wenn ein passender Ein- und Ausgang nebeneinander liegt (zB
##aA##
:), kann die Ratte nicht direkt vona
nach gehenA
. Innerhalb des Labyrinthbereichs muss sich ein kleiner Korridorabschnitt mit 2 Feldern befinden.In der Kurve, in der eine Ratte ihren Austrittspunkt erreicht (oder zu einem späteren Zeitpunkt), ist sie für andere Ratten nicht mehr sichtbar.
Ihr Programm kann so konzipiert sein, dass Labyrinthe für 1, 2 bis 26 Ratten berechnet werden.
Standardlücken sind nicht zulässig.
Ergebnis:
Nenne mit deiner Lösung, wie viele Ratten pro Labyrinth (N) dein Programm lösen kann. Ihre Punktzahl ist Ihre Codelänge in Bytes geteilt durch diese Zahl N.
Bitte fügen Sie Ihrer Antwort eine Beispielausgabe bei, damit wir sehen können, was Ihr Programm produziert.