You have been hired as a research assistant, and asked to create a small program that will build rat mazes. The rat box is always 62x22 and has an entrance (a) and exit (A) for the rat, like this (input 1):
#######a######################################################
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
#################################################A############
Your program must fill the box with blocks (#) leaving a path for the rat, like this (output 1):
#######a######################################################
####### ######################################################
####### ######################################################
####### ######################################################
####### ######################################################
####### ############
################################################# ############
################################################# ############
################################################# ############
################################################# ############
################################################# ############
################################################# ############
################################################# ############
################################################# ############
################################################# ############
################################################# ############
################################################# ############
################################################# ############
################################################# ############
################################################# ############
################################################# ############
#################################################A############
This is easy you think! You start writing a small program, full of confidence. However, the Principle Scientist has had a new idea -- he wants two rats to navigate the maze at the same time. Dr Rattanshnorter explains that they have different doors and different exits (input 2):
#b#####a######################################################
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# B
# #
#################################################A############
The rats have been trained to move straight through cross intersections but T-intersections leave them hopelessly confused and will invalidate the experiment. You start on your new more complex task when the good Doctor explains one final requirement: the rats are savage to each other so if they see each other at any point, a rat fight will break out and you will both be before the ethics board. You now realise your program should output a maze something like this (output 2):
#b#####a######################################################
# ##### ######################################################
# ##### ######################################################
# ##### ####################################### ####
# ##### ####################################### ######### ####
# ##### ####### ####
# ############################################# # ####### ####
# ############################################# # ####### ####
# ############################################# # ####### ####
# ############################################# # ####### ####
# # ####### ####
################################################# ####### ####
################################################# ####### ####
################################################# ####### ####
################################################# ####### ####
################################################# ####### ####
################################################# ####### ####
################################################# ####### ####
################################################# ####### ####
################################################# ####### B
################################################# ############
#################################################A############
By the time rat B reaches the intersection, rat A will be travelling down the corridor to exit A and the rat fight will be avoided.
Rules:
Your program should read in (STDIN or file) an input like those above, and output (STDOUT or file) the same data except many spaces will now be hashes (#). You may substitute any single character (such as
;
) instead of\n
in the input string but the output string still requires\n
characters. UPDATEDA rat pathway must be one character width wide, except for cross intersections (every space must have zero or two orthogonally adjacent
#
characters). Each rat must have a clear single path, except for cross intersections. No T-intersections are allowed.Rats are released simultaneously and move at a constant rate. At no time should two or more rats see each other (be in the same column or row without one of more
#
characters in between).If no solution is possible (such as adjacent entrance points), print
Impossible\n
and exit.Entrances and exits can be on any sides, however they will never be on the corners.
If a matched entrance and exit are adjacent (eg:
##aA##
), the rat cannot go directly froma
toA
. There must be a small 2 space corridor section inside the maze area.On the turn where a rat reaches its exit point (or any time after that), it is no longer visible to other rats.
Your program may be designed to compute mazes for 1, 2, up to 26 rats.
Standard loopholes are disallowed.
Score:
With your solution, nominate how many rats per maze (N) your program can solve. Your score is your code length in bytes divided by this number N.
Please include a sample output in your answer so we can see what your program produces.