Desafío
Cree una función o programa que, cuando se le da un número entero size
, haga lo siguiente:
Si size
es igual a 1, salida
H H
HHH
H H
Si size
es mayor que 1, salida
X X
XXX
X X
donde X
es la salida del programa / función parasize - 1
(Si lo prefiere, puede hacer que el caso base corresponda a 0
, siempre que especifique en su respuesta)
Cualquiera de los siguientes formatos de salida son aceptables, el que sea más conveniente para usted:
Una cadena de la estructura requerida con dos caracteres distintos correspondientes a
H
yspace
Una matriz bidimensional con la estructura requerida, con dos valores distintos correspondientes a
H
yspace
Una matriz / lista de cadenas, con una línea de salida en cada cadena, con dos valores distintos correspondientes a
H
yspace
Se permiten espacios iniciales, siempre que haya una cantidad constante de espacios iniciales en cada línea. Los dos caracteres de salida distintos pueden depender de cualquier cosa que elija, siempre que sean diferentes.
Especifique qué formato de salida está devolviendo su código.
Casos de prueba
1
H H
HHH
H H
2
H H H H
HHH HHH
H H H H
H HH HH H
HHHHHHHHH
H HH HH H
H H H H
HHH HHH
H H H H
3
H H H H H H H H
HHH HHH HHH HHH
H H H H H H H H
H HH HH H H HH HH H
HHHHHHHHH HHHHHHHHH
H HH HH H H HH HH H
H H H H H H H H
HHH HHH HHH HHH
H H H H H H H H
H H H HH H H HH H H H
HHH HHHHHH HHHHHH HHH
H H H HH H H HH H H H
H HH HH HH HH HH HH HH HH H
HHHHHHHHHHHHHHHHHHHHHHHHHHH
H HH HH HH HH HH HH HH HH H
H H H HH H H HH H H H
HHH HHHHHH HHHHHH HHH
H H H HH H H HH H H H
H H H H H H H H
HHH HHH HHH HHH
H H H H H H H H
H HH HH H H HH HH H
HHHHHHHHH HHHHHHHHH
H HH HH H H HH HH H
H H H H H H H H
HHH HHH HHH HHH
H H H H H H H H
Este es el código de golf , por lo que gana el conteo de bytes más bajo para cada idioma.
fuente
Respuestas:
Wolfram Language (Mathematica) , 46 bytes
Devuelve una matriz 2d de
0
sy1
s.Pruébalo en línea!
fuente
Nest
(repetidamente) la función varias veces. Al igual que cualquier otra presentación (Jelly?) ElArrayFlatten
está ... bueno, integrado, pero se comporta de manera similar a unFlatten[#,{{1,3},{2,4}}]
en este caso. (no probado)Lienzo ,
1412 bytesPruébalo aquí!
Explicación:Donde
I
está la entrada,X
es el patrón generado por el bucle anterior ("H" para el primer bucle), y<space>
es el espacio vacío en la primera y tercera fila del patrón, agregado implícitamente por+
.-2 bytes gracias a dzaima !
fuente
MATL ,
1211 bytesDada la entrada
n
, esto genera una matriz que contiene0
yn
.Pruébalo en línea!
Para convertir esto en una matriz de caracteres
H
y espacio, agregueg72*c
el encabezado. ¡Pruébalo en línea también!O agregue
]1YC
para ver la matriz que se muestra gráficamente. ¡Pruébalo en MATL Online!Explicación
fuente
Stax ,
1615 bytesEjecutar y depurarlo
Esta es la representación ascii del programa con comentarios. Este programa construye la H lateralmente y luego se transpone una vez al final.
Programa adicional de 14 bytes : utiliza su entrada como el carácter de salida. Teóricamente, esto no produciría la forma correcta en 10, ya que tiene 2 dígitos, pero el intento de ejecutarlo bloquea mi navegador.
fuente
Rubí , 72 bytes
La salida es una lista de cadenas, una cadena por línea.
Pruébalo en línea!
fuente
Haskell , 50 bytes
Pruébalo en línea!
Hace una cuadrícula de 0 y 1. Un personaje más largo para espacios y H's.
Haskell , 51 bytes
Pruébalo en línea!
fuente
Jalea ,
171615 bytesEste es un programa completo que imprime una matriz 2D de 1 y 0 .
Pruébalo en línea! o vea la salida con H 'sy espacios.
fuente
APL (Dyalog Classic) , 14 bytes
Pruébalo en línea!
⎕
entrada evaluada,⍳⎕⍴3
todas las n-tuplas con elementos de 0 1 22|
mod 2×/¨∘.≥⍨
formar una matriz comparando cada par de tuplas a y b - si todos los elementos de a son ≥ los elementos correspondientes de b, es un 1, de lo contrario 0fuente
SOGL V0.12 , 13 bytes
Pruébalo aquí!
fuente
R , 64 bytes
Pruébalo en línea!
Reduce por producto Kronecker, como un puerto descarado de la respuesta de Luis Mendo .
El pie de página imprime el resultado muy bien, pero esto es una función anónima que devuelve una
matrix
de1
paraH
y0
por el espacio.fuente
Java (OpenJDK 9) , 135 bytes
Pruébalo en línea!
Devuelve un
int[][]
con0
forH
y1
forspace
. Esto realmente "talla" una pared deH
's en lugar de "amontonar"H
.Explicaciones
fuente
V , 22 bytes
Pruébalo en línea!
Hexdump:
Este es básicamente el mismo enfoque que la alfombra Sierpinski y The Fractal Plus en Anarchy Golf.
fuente
Python 2 , 70 bytes
Pruébalo en línea!
La función genera una lista de cadenas.
Python 2 , 84 bytes
Pruébalo en línea!
Utiliza la misma plantilla que otros patrones fractales 3 * 3:
fuente
J ,
2522 bytesPruébalo en línea!
fuente
Haskell,
73676455 bytesEsto funciona solo con la última versión de
Prelude
, porque exporta<>
desdeData.Semigroup
. Para ejecutarlo en TIO, agregue una importación como se hace aquí: ¡ Pruébelo en línea!Editar: -9 bytes gracias a @ Potato44.
fuente
(#)
abajo ag#f=g<>f<>g
si se utiliza GHC 8.4. Esto se debe aSemigroup
que ahora está en el preludio.Perl 5 ,
4644434140 bytes1 recuento basado. Usos
0
y1
paraH
y espacio, tiene un líder1
(espacio)Basado en una idea clásica de mtve.
Pruébalo en línea!
fuente
\321
es necesario, cualquier personaje parece funcionar.//
y$'
también puede reemplazar//g
y$`
, pero no estoy seguro de que conduzca a una mejora.\321
estaba el complemento de bits.
(usado para generar otro patrón fractal). Pero dejé caer el complemento de bits, así que, por supuesto, ya no lo necesito. Utilicé//g
y $ `para poder probar fácilmente el código desde la línea de comandos (//
y$'
no llevar a una ganancia que pueda ver, el byte obtenido se desperdicia con un espacio o de!
nuevo)Vim -
665654 bytesA @ c H esc " r d ^ q c { ctrl-v } " a y g v r space g v d " a P P " a P V G " b y P g v ctrl-v $ d " a P . . G " b p q @ r
La entrada se toma como un número en el búfer.
fuente
:set nowrap
para ver el resultado, para 4 y más.APL (Dyalog Unicode) ,
3834 bytes SBCSLa salida es una matriz bidimensional con
1
representación de H y0
representa el espacio.Pruébalo en línea!
fuente
f←
y contar caracteres como 1 byte cada uno: codegolf.meta.stackexchange.com/questions/9428/… También se considera legal tomar la entrada⎕
, es decir, reemplazar⍣⍵
con⍣⎕
y soltar las llaves externas de dfn.1 1⍴1
puede escribirse como⍪1
y luego los parens alrededor del operador se vuelven innecesarios. Si estás familiarizado con los trenes , pueden ayudar mucho aquí.⍨
es tu amigo:(⍵,(0×⍵),⍵)
=>(⍵,⍵,⍨0×⍵)
Carbón ,
3029 bytesPruébalo en línea! El enlace es a la versión detallada del código. Explicación:
Imprime el original
H
.Recorre los primeros
size
poderes de 3.Mueva el cursor de regreso al origen.
Trim
necesita esto, ya que tanto la impresión originalH
como la reflexión a continuación mueven el cursor.Copie la iteración anterior hacia abajo, creando un dominó.
Copie el resultado hacia abajo y hacia la derecha, creando un tetromino.
Recorte el lienzo hasta una
L
forma triomino.Refleje el lienzo horizontal y verticalmente con superposición, completando la iteración.
El carbón es mejor en algunos fractales que en otros. Aquí hay una idea similar, pero en casi la mitad del tamaño:
Pruébalo en línea! El enlace es a la versión detallada del código.
fuente
Python 2 , 143 bytes
Pruébalo en línea!
-30 bytes gracias a recursivo
El código del contenedor es para un buen formato. funciona bien si lo quitas
fuente
PHP 7,
125109 bytesUn enfoque diferente: en lugar de anidar y aplanar el resultado de forma recursiva, esto solo recorre las filas y columnas y utiliza un tercer ciclo para averiguar si imprimir
H
o_
.Editar: ahorró mucho combinando los bucles de fila / columna en uno, aunque tomó un poco obtener la disminución correcta del bucle interno. Requiere PHP 7 para el operador de energía.
¡Pruébalos en línea !
Imprime el resultado. Corre como tubería con
-nR
.función calificada,
147130 bytesdevuelve una sola cadena. Ejecutar con la configuración predeterminada (no
php.ini
).fuente
%3==1
puede ser reemplazado con%3&1
.Jalea , 25 bytes
Pruébalo en línea!
Aunque esto es más largo que la presentación Jelly existente , intenta generar cada personaje independientemente de la coordenada.
En particular, si la coordenada es
respectivamente.
(x,y)
(indexación 1), el primer enlace regresa0
y1
corresponde aH
yAdemás, los 5 bytes
ị⁾ HY
se usan para formatear, por lo que este programa (20 bytes) también es válido (pero el resultado no se ve tan bien):fuente
T-SQL ,
267261 bytesfuente
PHP 7, 153 bytes
Ejecute con la configuración predeterminada (no
php.ini
) o pruébelo en línea .fuente
Perl, 64 bytes
Requiere
-p
, la entrada se toma de stdin. La salida es una H deH
s.Pruébalo en línea!
fuente
-p
(creo que es demasiado indulgente para Perl, pero así es ahora)PHP (5.6+), 94 bytes
Usado con la
-F
opción de línea de comando. Asume los valores predeterminados del intérprete (-n
). No funcionará en versiones anteriores a 5.6, debido al operador de energía.Uso de la muestra
Pruébalo en línea!
fuente
$s.$s.$s
lugar de$s.=$s.$s
. Y no necesitas<?
con en-R
lugar de-F
.-R
, ¿me puede mostrar el uso completo?-nF
:echo <input> | php -nR '<code>'
.-r
es casi lo mismo:php -nr '<code>' <arguments>
.preg_filter
es iterar cada línea mientras se preservan las nuevas líneas, aproximadamente equivalentes ajoin("\n",array_map(function(){...},split("\n",$s.$s.$s)))
, pero significativamente menos detalladas. Inicialmente tuvestr_pad
pero cambié asprintf
porque es un byte más corto:'"\0".str_pad($$i++/$i&1?"\0":"",$i)."\0"'
CJam -
103978776 bytesEste programa realiza una recursión "codificada a mano" bastante detallada. No hay multiplicaciones de matrices inteligentes. A lo largo de la recursión, en la parte superior de la pila hay una matriz que recopila la salida obtenida de las llamadas primarias. Justo después de cada conjunto de llamadas recursivas, la salida de las llamadas recursivas debe comprimirse para asegurarse de que la salida sea correcta cuando la pila se imprime linealmente al final del programa. La pila de argumentos que se pasa por la recursividad se mantiene en la variable
A
.Probar en línea
fuente
K (ngn / k) , 18 bytes
Pruébalo en línea!
fuente
Japt , 23 bytes
Pruébalo en línea!
Desempaquetado y cómo funciona
Usando el patrón transpuesto
es mucho más fácil de manejar que el
H
patrón original , al menos en Japt, dondeI
se puede hacer con repetición de cadena y relleno central.fuente
C ++ 11 - 138 bytes
Sin embargo, no estoy seguro si esta respuesta tiene una sintaxis válida aquí.
Sin golfing con código de trabajo
fuente