Sei stato assunto come assistente di ricerca e ti è stato chiesto di creare un piccolo programma che costruirà labirinti di topi. La scatola dei topi è sempre 62x22 e ha un'entrata (a) e un'uscita (A) per il ratto, in questo modo (input 1):
#######a######################################################
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
#################################################A############
Il tuo programma deve riempire la casella con i blocchi (#) lasciando un percorso per il topo, in questo modo (output 1):
#######a######################################################
####### ######################################################
####### ######################################################
####### ######################################################
####### ######################################################
####### ############
################################################# ############
################################################# ############
################################################# ############
################################################# ############
################################################# ############
################################################# ############
################################################# ############
################################################# ############
################################################# ############
################################################# ############
################################################# ############
################################################# ############
################################################# ############
################################################# ############
################################################# ############
#################################################A############
Questo è facile, pensi! Inizi a scrivere un piccolo programma, pieno di fiducia. Tuttavia, il Principle Scientist ha avuto una nuova idea: vuole che due topi navighino contemporaneamente nel labirinto. Il dottor Rattanshnorter spiega che hanno porte e uscite diverse (input 2):
#b#####a######################################################
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# B
# #
#################################################A############
I ratti sono stati addestrati a muoversi dritto attraverso le intersezioni incrociate, ma le intersezioni a T li lasciano irrimediabilmente confusi e invalideranno l'esperimento. Inizi il tuo nuovo compito più complesso quando il bravo Dottore spiega un requisito finale: i topi sono selvaggi l'uno con l'altro, quindi se si vedono in qualsiasi momento, scoppierà una lotta tra topi e sarete entrambi davanti al comitato etico. Ora ti rendi conto che il tuo programma dovrebbe generare un labirinto simile a questo (output 2):
#b#####a######################################################
# ##### ######################################################
# ##### ######################################################
# ##### ####################################### ####
# ##### ####################################### ######### ####
# ##### ####### ####
# ############################################# # ####### ####
# ############################################# # ####### ####
# ############################################# # ####### ####
# ############################################# # ####### ####
# # ####### ####
################################################# ####### ####
################################################# ####### ####
################################################# ####### ####
################################################# ####### ####
################################################# ####### ####
################################################# ####### ####
################################################# ####### ####
################################################# ####### ####
################################################# ####### B
################################################# ############
#################################################A############
Quando il ratto B raggiunge l'intersezione, il ratto A viaggerà lungo il corridoio per uscire da A e la lotta al topo sarà evitata.
Regole:
Il tuo programma dovrebbe leggere in (STDIN o file) un input come quelli sopra, e in output (STDOUT o file) gli stessi dati tranne che molti spazi saranno ora hash (#). È possibile sostituire qualsiasi singolo carattere (come
;
) invece che\n
nella stringa di input ma la stringa di output richiede ancora\n
caratteri. AGGIORNATOUna via del ratto deve avere una larghezza di un carattere, fatta eccezione per le intersezioni incrociate (ogni spazio deve avere zero o due
#
caratteri ortogonalmente adiacenti ). Ogni ratto deve avere un unico percorso chiaro, ad eccezione delle intersezioni incrociate. Non sono consentite intersezioni a T.I ratti vengono rilasciati contemporaneamente e si muovono a un ritmo costante. In nessun momento due o più ratti dovrebbero vedersi (essere nella stessa colonna o riga senza uno o più
#
caratteri in mezzo).Se non è possibile alcuna soluzione (come punti di ingresso adiacenti), stampare
Impossible\n
ed uscire.Gli ingressi e le uscite possono essere su tutti i lati, tuttavia non saranno mai sugli angoli.
Se un'entrata e un'uscita abbinate sono adiacenti (ad esempio
##aA##
:), il ratto non può andare direttamente daa
aA
. Ci deve essere una piccola sezione del corridoio di 2 spazi all'interno dell'area del labirinto.Nel turno in cui un topo raggiunge il suo punto di uscita (o in qualsiasi momento successivo), non è più visibile agli altri ratti.
Il tuo programma può essere progettato per calcolare labirinti per 1, 2, fino a 26 ratti.
Le scappatoie standard non sono ammesse.
Punto:
Con la tua soluzione, nomina quanti ratti per labirinto (N) possono essere risolti dal tuo programma. Il tuo punteggio è la lunghezza del tuo codice in byte diviso per questo numero N.
Includi un output di esempio nella tua risposta in modo che possiamo vedere cosa produce il tuo programma.