Imprima un bloque de torre con el código más corto posible.
Entrada:
La entrada define cuántos pisos tiene el bloque de la torre. Un piso contiene una ventana a cada lado de la puerta. La ventana está compuesta de 3x3 hashes.
A continuación se muestra un ejemplo de una torre de 4 pisos:
=====================
)V V V V V V V V V V(
)V V V V V V V V V V V(
)V V V V V V V V V V V V(
)V V V V V V V V V V V V V(
~~~~~~~~~~~~~~~~~~~~~~~~~~~
: : : : : : : : : : : : : :
: : ### : : : : : : ### : :
: : ### : : : : : : ### : :
: : ### : : : : : : ### : :
: : : : : : : : : : : : : :
: : : : : : : : : : : : : :
: : ### : : : : : : ### : :
: : ### : : : : : : ### : :
: : ### : : : : : : ### : :
: : : : : : : : : : : : : :
: : : : : : : : : : : : : :
: : ### : : : : : : ### : :
: : ### : : : : : : ### : :
: : ### : : : : : : ### : :
: : : : : : : : : : : : : :
: : : : : _______ : : : : :
: : ### : I I : ### : :
: : ### : I I : ### : :
: : ### : I I : ### : :
: : : : : I I : : : : :
Actualizar:
La entrada tiene que ser una o mayor.
Se permiten espacios finales al final de las líneas.
En mi ejemplo, cada línea tiene tres espacios iniciales. Esto no es obligatorio, solo el bloque de la torre con la entrada lo es.
Respuestas:
V , 72 bytes
Pruébalo en línea!
Aquí hay un hexdump, ya que contiene caracteres no imprimibles:
Me encontré con un error extraño. La sección en el medio:
dGÀpG
debería haber sido:,ÀäGG
pero esto no funciona para las entradas de 1, y no tengo idea de por qué.¯\_(ツ)_/¯
fuente
Mathematica,
301288258 bytesFunción pura que toma un entero positivo y genera una cadena. La cadena de salida no se verá bien porque Mathematica aparentemente no muestra las fuentes monoespaciales como monoespacios:
Por razones que no entiendo, formatea como monoespacio si usa
Print
la cadena:Editar: guardado varios bytes al no incluirlos
" "
al comienzo de cada línea. Se modificó la definición des
para manejar el caso donde solo hay un piso (StringRepeat
no le gusta repetir una cadena de0
veces).Edición 2: Gracias a LegionMammal978 y el hecho de que
StringJoin
esListable
una pesadilla incomprensible de listas anidadas y también 30 bytes más cortos.fuente
a<>b<>...<>x
cona<>{b,...,x}
en ciertas partes.Pitón 2 ,
275270262246240236 bytesSalvó a una pareja con una pista de @ Flp.Tkc y cambiando el primer bucle for.
16 guardados con más ayuda de @ Flp.Tkc
Pruébalo en línea!
Simplemente construye cada línea de la torre como una cadena y la agrega a una matriz, imprime la matriz al final. Si alguien quiere una explicación completa, le daré a regañadientes si puedo recordar cómo funciona ☺
fuente
PowerShell , 193 bytes
Pruébalo en línea!
(Siento que todavía puede haber unos pocos bytes aquí o allá. Sub-190 parece factible).
Las primeras tres líneas forman el techo, usando la multiplicación y concatenación de cuerdas, junto con un bucle
3..0|%{...}
para obtener el número correcto y la inclinación deV
s.La siguiente línea va desde la entrada pre-decrementada
--$args[0]
hasta0
un bucle (la pre-decrementación nos permite indexar usando en!$_
lugar de$_-eq1
guardar varios bytes más adelante). Cada iteración de bucle, estamos construyendo un montón de cadenas, estableciendo variables$b
y$a
en el camino. También estamos usando pseudoternarios(... , ...)[...]
para elegir las cuerdas apropiadas para el medio para que podamos obtener la puerta en el primer piso correcta.Cada una de las cadenas se deja individualmente en la tubería, y el valor predeterminado
Write-Output
inserta nuevas líneas entre ellas, por lo que las obtenemos de forma gratuita.fuente
T-SQL,
378372353331325 bytesGolfizado:
Sin golf:
Pruébalo
fuente
C,
409406402 bytesLlamar con:
fuente
Lote, 373 bytes.
Construye la cresta y la canaleta al notar que son múltiplos de 3, lo que reduce unos pocos bytes. Construye el techo al notar que el sufijo es el mismo para cada línea (y nuevamente incluye una repetición triple). Construye las paredes comenzando con la línea de pared más interesante, que es la ventana de la planta baja, y eliminando detalles para generar las otras partes de la pared.
fuente
Javascript, 335 bytes
Crea una función
y()
con argumentoz
, tal quey(z)
produce el resultado deseado.Ejemplo de uso:
Estoy haciendo la transición de JavaScript normal a code-golf JS. Algún consejo sería de gran aprecio.
fuente
Lienzo ,
6261 bytesPruébalo aquí! La entrada 0 funciona como se espera aunque no sea necesario.
fuente