No desea pagar dinero por el costoso programa arquitectónico, por lo que decide rodar el suyo. Decide usar ASCII para diseñar sus edificios. Su programa tomará una sola cadena formateada de una manera específica, y el programa generará el edificio.
Entrada
La entrada consiste en una sola línea de caracteres. Se puede suponer que solo contiene las letras a-j
, los números 1-9
y los símbolos -
y +
.
Descripción de salida
Para cada letra a-j
, el programa generará una línea vertical de la siguiente manera. Llamaremos a esto una columna.
.
..
...
****
*****
******
-------
--------
+++++++++
++++++++++
abcdefghij
Por ejemplo, la entrada abcdefgfedefghgfedc
generaría:
.
* ***
*** *****
***** *******
---------------
-----------------
++++++++++++++++++
+++++++++++++++++++
Una letra puede tener como prefijo un número entero positivo n
, que agregará n
caracteres de espacio en blanco debajo de la columna. Llamaremos a esto un desplazamiento. Por ejemplo, usando S
para anotar un espacio en blanco, la entrada 3b2b3b
generaría:
+ +
+++
S+S
SSS
SSS
Una letra también puede tener como prefijo un número entero negativo-m
, que eliminará los caracteres de la columna que m
no sean espacios en blanco (no los reemplace con espacios en blanco, elimínelos por completo). Llamaremos a esto una rebanada. Por ejemplo, la entrada -1j-2j-3j-4j-5j-6j-7j-8j
generaría:
.
..
...
*...
**...
***...
-***...
--***...
+--***..
Se puede aplicar un desplazamiento y un corte a la misma línea, pero el desplazamiento debe ir primero. En otras palabras, la letra puede tener el prefijo n-m
, donde n
es el tamaño del desplazamiento y m
el tamaño de la porción. Por ejemplo, usando S
para anotar un espacio en blanco, la entrada '2-4j' generaría:
.
.
.
*
*
*
S
S
Por último, el +
operador utilizado entre dos columnas indica que deben apilarse una encima de la otra en la misma columna en lugar de en columnas separadas. Por ejemplo, la entrada '2-4ja' sale:
.
.
.
*
*
*
S
S+
Mientras que las 2-4j+a
salidas de entrada :
+
.
.
.
*
*
*
S
S
Aquí hay una entrada de muestra:
abiehef+ehfhabc
Y la salida resultante:
*
-
. -
. . +. .
* * +* *
* * ****
********
--------
-------- -
+++++++++ ++
+++++++++++++
Parece una antigua torre de castillo destruida de algún tipo.
Aquí hay otra entrada de muestra:
6b5b+a6b1-2d+3-4f1-2d+-2c+2-4f+1-2d+-2c2-2d+1-4g+1-2c+b+-2c+-4e2-7j+-4g+d+-2c+-4f2-7j+-5h+b+-2c+a+-3f2-7j+-7i+-4e+b+b+a+-4f2-7i+a+-7h+-4f+b+b+a+-4f2-7j+-7h+-4f+a+-7h+a+-7i+-4f2-7j+-7i+-6h+a+-7i+b+-4e3-7i+a+-7h+-4e+a+-7h+b+1-7h3-7j+1-4f+-7h+b+-4f+a3-7j+2-4f+a+-4f+b3-2d+-2d+3-4g+b3-2d+-2d+-2c
Y la salida resultante:
****** +++
******+.*++
---++.+ ***
-+-+++..++**
-+--+++.+++*
--++++.+..*
+++++.+**
+++****.****** -
+++*****.**.. --
+ ***....+..--
...+.....--
--.........--
---......
--
(Se suponía que era Mario, pero no resultó muy bueno ...)
Si la especificación aún no está clara, tengo una implementación sin golf escrita en Python 2.7. Puede ejecutarlo y experimentar para tener una idea de cómo funciona la especificación. También puede optar por reírse de mis habilidades de programación.
Este es el código de golf, por lo que gana la entrada más corta. Haga preguntas en los comentarios si no está claro.
a+a+a+a+a
generaría cinco signos más uno encima del otro.Respuestas:
Ruby,
223214 bytesEso fue divertido. :)
Aunque debería ser bastante obvio, descubrí una nueva forma de hacer estos desafíos donde las cadenas se han construido a partir de columnas: simplemente hágalas en filas y transponga la matriz de caracteres antes de unir todo.
fuente
puts (0..z=g.map(&:size).max-1).map{|i|g.map{|y|(v=y[z-i])?v:?\ }*''}
. Pero probablemente no sea tan divertido sin la transposición.Cobra - 473
No creo que Cobra vaya a ganar uno de estos: /
Todo agradable y comentado:
EDITAR: Acabo de darme cuenta de que esto parece sospechosamente similar a la solución Ruby. ¿Grandes mentes piensan igual?
fuente
Lua - 451
Nada especial. Sin embargo, fue divertido cambiar el nombre de una carga de funciones a tope por una vez. Editaré el código sin golf más adelante.
Pruébalo aquí. Salida de muestra:
fuente
PowerShell ,
214212209206200 bytes-3 bytes gracias @Veskah
Pruébalo en línea!
Versión menos golfizada:
fuente
(-?.)
debería funcionar tambiénPython 3, 268 bytes
En su mayoría sin golf:
fuente