¡Santa pudo refabricar todos los regalos que los elfos robaron durante la noche! Ahora tiene que enviarlos a la línea de ensamblaje para su embalaje. Por lo general, tiene una cámara para supervisar la línea de montaje, tanto para asegurarse de que los elfos están haciendo un buen trabajo como porque las imágenes de la línea de montaje se ven bien en los carteles publicitarios [cita requerida]
Desafortunadamente, su cámara se rompió, ¡así que le gustaría que dibujes una simulación de cómo sería la línea de montaje!
Para que la línea de ensamblaje funcione con la máxima eficiencia y para reducir el riesgo de error o falla, todas las cajas actuales tienen el mismo ancho para que encajen perfectamente en la cinta transportadora.
Desafío
Dada una lista de regalos representados por sus dimensiones, envíe una cinta transportadora con todos los regalos.
Un regalo se dibuja así:
+----+
/ /|
+----+ |
| | +
| |/
+----+
Este regalo tiene ancho 1, altura 2 y longitud 4. Tenga en cuenta que los signos más no cuentan para la longitud lateral, por lo que un regalo con longitud 4 en realidad abarca 6 posiciones.
Todos los regalos se dibujan uno al lado del otro con un espacio entre los dos personajes más cercanos; es decir, las esquinas inferiores izquierdas de los regalos están espaciadas de tal manera que si un cuadro actual tiene longitud ly ancho w, la esquina inferior izquierda del cuadro actual siguiente estará exactamente a la l + w + 4derecha de la esquina inferior izquierda del cuadro anterior.
Después de dibujar todas las cajas presentes, la cinta transportadora se dibuja reemplazando el espacio entre cajas en cada una de las últimas width + 2líneas con guiones bajos.
El resultado final para los cuadros actuales con (l, w, h)de [(4, 1, 2), (8, 1, 3), (1, 1, 1)]sería:
+--------+
+----+ / /|
/ /| +--------+ | +-+
+----+ | | | | / /|
| | +_| | +_+-+ +
| |/__| |/__| |/
+----+___+--------+___+-+
Especificaciones de formato
Puede optar por tomar una lista de 3 tuplas donde uno de los elementos es coherente en toda la lista (que sería el ancho), o puede tomar el ancho actual y luego una lista de 2 tuplas que representa la longitud y altura de cada regalo. Puede tomar las entradas en cualquier orden y en cualquier formato razonable, pero los regalos deben mostrarse en el mismo orden en que se dan como entrada.
Puede elegir cualquier formato de salida razonable para el arte ASCII (incluido el regreso de una función).
Casos de prueba
Estos casos de prueba se dan como [(l, w, h), ...]formato.
[(4, 1, 2), (8, 1, 3), (1, 1, 1)]:
+--------+
+----+ / /|
/ /| +--------+ | +-+
+----+ | | | | / /|
| | +_| | +_+-+ +
| |/__| |/__| |/
+----+___+--------+___+-+
[(5, 3, 4), (8, 3, 1), (1, 3, 7)]:
+-+
/ /|
/ / |
+-----+ / / |
/ /| +-+ |
/ / | | | |
/ / | +--------+ | | |
+-----+ | / /| | | |
| | +___/ / +_| | +
| | /___/ / /__| | /
| | /___+--------+ /___| | /
| |/____| |/____| |/
+-----+_____+--------+_____+-+
[(0, 0, 0)] (this is the most interesting test case ever :P)
++
+++
++
[(8, 3, 0), (0, 3, 8)] (more zero cases)
++
//|
// |
// |
++ |
|| |
|| |
|| |
+--------+ || |
/ /+_|| +
/ //__|| /
/ //___|| /
+--------+/____||/
+--------+_____++
Reglas
- Se aplican lagunas estándar
- Este es el código de golf , por lo que gana la respuesta más corta en bytes
- No se aceptarán respuestas.
Nota: Me inspiré para esta serie de desafíos de Advent Of Code . No estoy afiliado a este sitio
Puede ver una lista de todos los desafíos de la serie mirando la sección 'Vinculados' del primer desafío aquí .