Introducción
Mi sobrina quiere hacer una pista de autos de carrera. Ella tiene partes de madera que encajan entre sí para formar la pista. Cada parte tiene forma cuadrada y contiene una forma diferente. Usaré los caracteres de dibujo de tubería para ilustrar:
│
: el camino que va verticalmente─
: el camino que va horizontalmente┌
┐
└
┘
: los caminos que giran en una dirección┼
: Un puente con un paso subterráneo
Curiosamente, no hay piezas de unión en t.
Aquí hay un ejemplo de una posible pista de carreras:
┌─┐
│ │┌─┐
│ └┼─┘
└──┘
Las reglas para una pista de autos de carrera válida son las siguientes:
- No puede haber ningún camino que vaya a ninguna parte.
- Debe formar un bucle (y todas las piezas deben ser parte del mismo bucle).
- En los puentes / pasos subterráneos, no puede girar (por lo que debe atravesarlos directamente).
Desafortunadamente, las piezas de la pista de autos de carrera que mi sobrina y yo tenemos son limitadas. Pero definitivamente queremos usarlos todos en la pista. Escriba un programa que, dada una lista de las piezas que están en nuestro inventario, genere una pista de autos de carrera que use todas esas piezas.
Descripción de entrada
Nos gustaría que la entrada ingrese a través de STDIN, argumentos de línea de comandos, lectura de archivos o una función de entrada de usuario (como raw_input
o prompt
). La entrada es enteros positivos separados por comas en la forma
│,─,┌,┐,└,┘,┼
donde cada uno de ellos representa la cantidad de esa pieza en particular que tenemos. Entonces, por ejemplo, la entrada:
1,1,1,1,1,1,1
significaría que teníamos una de cada pieza.
Descripción de salida
Salida de una pista de carreras de coches utilizando los caracteres de dibujo de tubería enumerados anteriormente. La pista de autos de carrera debe usar exactamente el número de cada pieza especificada en la entrada, ni más ni menos. Habrá al menos una pista de carrera válida para cada entrada.
Ejemplo de entradas y salidas
Entrada: 3,5,2,2,2,2,1
Una posible salida:
┌─┐
│ │┌─┐
│ └┼─┘
└──┘
Entrada: 0,0,1,4,4,1,3
Una posible salida:
┌┐
└┼┐
└┼┐
└┼┐
└┘