El reto
Su programa o función aceptará una sola entrada de cadena de STDIN o un parámetro de función. Puede suponer que la entrada contendrá solo caracteres alfabéticos (a-zA-Z), espacios y puntos completos. La entrada no distingue entre mayúsculas y minúsculas, por lo que debe tratar 'a' exactamente igual que trataría 'A'.
Para cada carácter en la cadena, generará una representación de un edificio según la siguiente especificación.
Cada edificio debe tener un techo, designado por un guión bajo en la línea superior y luego una barra oblicua, espacio, barra invertida en la segunda línea.
_
/ \
Luego tendrá una serie de pisos, que coinciden con el número de letra (a = 1, b = 2, c = 3, etc.) que están representados por una pared (|) en cada lado y un espacio en el medio. El piso inferior (y solo el piso inferior) debe tener una base, que es un guión bajo entre las paredes. Me gusta esto...
|_|
Entonces, por ejemplo, 'b' se vería así
_
/ \
| |
|_|
Ahora, sabemos que los edificios muy altos y estrechos no pueden sostenerse y deben ensancharse en la base, por lo que ningún edificio puede tener más de tres pisos de altura sin algún soporte adicional. Por lo tanto, cada tres niveles (no menos) debe agregar una 'capa de ampliación'. La capa de ensanchamiento consiste en una barra oblicua y una barra invertida directamente encima de las paredes de la sección debajo de esta, y la sección de abajo debe ser dos espacios más ancha que la sección de arriba. La capa adicional no cuenta para la altura del edificio.
Los edificios no deben superponerse, pero no deben tener espacios innecesarios entre ellos, y el suelo siempre es plano, por lo que todos los edificios deben tener su base en el mismo nivel.
Por ejemplo, 'abcdefga' se verá así.
_
/ \
_ | |
_ / \ | |
_ / \ | | | |
/ \ | | | | / \
_ | | | | | | | |
_ / \ | | | | / \ | |
_ / \| | | | / \| | | | _
/ \| || |/ \| || |/ \/ \
|_||_||_||___||___||___||_____||_|
Los espacios en la entrada de cadena deben estar representados por un doble espacio.
Las paradas completas en la entrada de la cadena deben representarse con escombros como este.
/\/\
Ejemplos adicionales
Entrada = Hello world.
Salida =
_
/ \
| |
| |
| |
/ \
| |
| | _
| | / \
/ \ | |
| | | |
_ | | _ | |
/ \ | | / \ / \
| | / \ | | | |
| | | | | | | |
_ _ | | | | | | | | _
/ \ / \ / \ | | / \ / \ / \
| | | | | | / \ | | | | | |
| | | | | | | | | | | | | |
| | | | | | | | | | | | | |
_ / \ / \ / \ | | / \ / \ / \
/ \ | | | | | | / \ | | | | | |
| | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | |
| | _ / \ / \ / \ | | / \ / \ / \
/ \ / \ | | | | | | / \ | | | | | | _
| | | | | | | | | | | | | | | | | | / \
| | | | | | | | | | | | | | | | | | | |
| | | | / \/ \/ \ | | / \/ \/ \ | |
/ \/ \| || || | / \| || || | | |
| || || || || | | || || || |/ \
|_____||___||_______||_______||_________| |_______________||_________||___________||_______||___|/\/\
Entrada = lorem ipsum
_
/ \
_ | |
/ \ | |
_ | | | |
/ \ | | / \
| | _ | | | |
| | / \ / \ | |
_ | | | | | | | |
/ \ / \ | | | | / \
| | | | _ | | | | | | _
| | | | / \ / \ / \ | | / \
_ | | | | | | | | | | | | | |
/ \ / \ / \ | | | | | | / \ | |
| | | | | | | | | | | | | | | |
| | | | | | / \ / \ / \ | | / \
| | | | | | | | _ | | | | | | | |
/ \ / \ / \ | | / \ | | | | / \ | |
| | | | | | | | | | | | | | | | | |
| | | | | | / \ | | / \ / \ | | / \
| | | | | | | | | | | | | | | | | |
/ \ / \ / \ _ | | / \ | | | | / \ | |
| | | | | | / \ | | | | | | | | | | | |
| | | | | | | | / \ | | / \ / \ | | / \
| | | | | | | | | | | | | | | | | | | |
/ \/ \/ \ | | | | / \ | | | | / \ | |
| || || |/ \ | | | | | | | | | | | |
| || || || |/ \ | |/ \/ \| |/ \
|_______||_________||___________||___||_________| |_____||___________||_____________||_____________||_________|
Entrada = a.a.a.x.x.x.a.a.a
_ _ _
/ \ / \ / \
| | | | | |
| | | | | |
| | | | | |
/ \ / \ / \
| | | | | |
| | | | | |
| | | | | |
/ \ / \ / \
| | | | | |
| | | | | |
| | | | | |
/ \ / \ / \
| | | | | |
| | | | | |
| | | | | |
/ \ / \ / \
| | | | | |
| | | | | |
| | | | | |
/ \ / \ / \
| | | | | |
| | | | | |
| | | | | |
/ \ / \ / \
| | | | | |
| | | | | |
| | | | | |
/ \ / \ / \
_ _ _ | | | | | | _ _ _
/ \ / \ / \ | | | | | | / \ / \ / \
|_|/\/\|_|/\/\|_|/\/\|_______________|/\/\|_______________|/\/\|_______________|/\/\|_|/\/\|_|/\/\|_|
Reglas
- Por supuesto, este es el código de golf, gana la puntuación más baja en bytes
- Se aplican las reglas de laguna legal estándar
- Se permite cualquier cantidad de líneas en blanco adicionales antes o después de la salida
- Puede elegir generar el resultado completo en una cadena u ofrecer la salida como una matriz donde cada elemento representa una línea de salida, o enviar a STDOUT
Nota
Esta es mi primera publicación en PPCG, así que, por favor, ve con calma. Ha pasado por la caja de arena. Cualquier punto negativo o posibles mejoras, publíquelo como comentario y haré lo que pueda
[a,z]
, [1.26]
partes del Mego mencionados. Tenerlo opcional es a menudo lo mejor (a menos que sea una parte clave del desafío (no está aquí).
[a,z]
y[A,Z]
al[1,26]
parece un requisito inútil. Sería mucho mejor usar solo una lista de enteros como entrada (teniendo que0
ser la entrada para los escombros). Además, publicar su desafío después de haber estado en el Sandbox durante solo 21 horas , sin esperar a recibir más votos o comentarios de más de un usuario, no cuenta como si hubiera "pasado por el sandbox". Se recomienda dejar los desafíos en el Sandbox durante 48-72 horas como mínimo, para darles a las personas suficiente tiempo para revisarlos.