Dado un número n , genere las primeras n columnas de este patrón:
#
# #
# # # #
# # # # # # # #
# # # # # # # # # # # # # # # #
################################ ...
La altura de la columna en (1-indexado) n es el número de 0
bits finales en la representación binaria de n , más uno. Como resultado, la capa inferior tiene cada columna rellenada, la segunda capa cada segunda columna, la tercera capa cada cuarta columna, etc.
Reglas
- Puede ingresar y salir a través de cualquier método estándar.
- Puede suponer que la entrada es un número entero entre 1 y 999, inclusive.
- La salida puede contener cualquier cantidad de espacio en blanco, siempre que el patrón esté intacto.
- El patrón debe estar indexado en 1 y en el mismo formato que se muestra aquí.
- Puede usar cualquier carácter que no sea un espacio en blanco en lugar de
#
, pero no puede cambiar el carácter del espacio.
Casos de prueba
1
#
2
#
##
3
#
###
4
#
# #
####
5
#
# #
#####
7
#
# # #
#######
32
#
# #
# # # #
# # # # # # # #
# # # # # # # # # # # # # # # #
################################
Aquí se pueden encontrar algunos casos de prueba más grandes .
Tanteo
Este es el código de golf , por lo que gana el código más corto en bytes en cada idioma.
#
?Respuestas:
Python 2 , 54 bytes
Pruébalo en línea!
Imprime con muchos espacios en blanco líderes. Cada fila que
i
cuenta hacia abajon
repite un patrón de2**i-1
espacios seguido de a#
. Este patrón se repite hasta el ancho de la regla, que es la entradan
. Esto se hace multiplicando la cadena del patrón porn
y tomando los primerosn
caracteres con[:n]
.El patrón puede hacerse formateando cadenas para una alternativa de igual longitud.
Un lindo método de corte es más largo.
fuente
Python 3 , 74 bytes
Pruébalo en línea!
fuente
a=2**len(bin(n))
para 72 bytesV ,
17, 16 bytesPruébalo en línea!
Hexdump:
¡Gracias a @KritixiLithos por guardar un byte!
Este algoritmo es terriblemente ineficiente, pero debería funcionar en teoría para cualquier entrada de tamaño.
Funciona generando las primeras n iteraciones del siguiente patrón:
Y luego cortando todas menos las primeras n columnas. Como tal, esto producirá una tonelada de espacios en blanco líderes, pero el OP dijo:
Explicación:
fuente
|
.JavaScript (ES6),
6158 bytesAhorré 1 byte gracias a @ETHProductions, luego 2 bytes más cuando vi que se podía usar cualquier carácter.
Una solución recursiva.
Casos de prueba:
Mostrar fragmento de código
Animación:
Mostrar fragmento de código
fuente
c/2|0
ac>>1
para guardar un byte.APL (Dyalog) , 21 bytes
Pruébalo en línea!
'# '[
... `] indexa la cadena con⎕
obtener entrada⍳
que muchos í ntegers2⊥⍣¯1
convertir a binario, utilizando tantos dígitos como sea necesario (un número en cada columna )⊖
voltear al revés∨⍀
reducción vertical acumulativa O0⍪
concatenar ceros en la parte superior⊖
voltear al revés (es decir, retroceder de nuevo)1+
agregar uno (para indexación basada en 1)fuente
Jalea ,
1110 bytesPruébalo en línea!
1 byte guardado después de que el OP agregó una relajación que el personaje no tiene que ser
#
.fuente
Octava, 45 bytes
Pruébalo en Octave Online!
En lugar de
'#'
impresiones'!'
.fuente
PHP , 139 bytes
Pruébalo en línea!
fuente
Japt ,
2017 bytesGuardado 3 bytes gracias a @Shaggy y @ETHproductions
Pruébalo en línea!
Explicación:
Entrada: 5
fuente
l
n&-n
capturar solo el final1
y todos los0
s finalesn
. No estoy seguro de si esto ayudará, pero vale la penaC,
8474 bytesSin golf:
Prueba con:
Explicación
Una vez más, la recursión toma menos caracteres en C que la iteración, por lo que los dos bucles se expresan como las dos invocaciones recursivas.
Además, C es un gran lenguaje para jugar trucos con expresiones booleanas, permitiendo la decisión de poner un espacio en blanco o un
#
a ser expresado por la expresión32+3*!(i&m)
. Un espacio tiene el valor ASCII de 32,#
es ASCII 35, por lo que obtenemos un espacio en blanco si alguno de los bits de la máscara está configuradoi
.fuente
int i,l,m
?Pyth , 15 bytes
¡Intentalo!
explicación
fuente
Python 2 , 47 bytes
Pruébalo en línea!
fuente
JavaScript (ES8), 71 bytes
¡La función padStart () se introdujo en ECMAScript 2017!
Mostrar fragmento de código
JavaScript (ES6), 77 bytes
Mostrar fragmento de código
fuente
Mathematica, 69 bytes
fuente
( WESRRMICGSE ): 237 bytes
Bien. 'tiempo explicativo.
En primer lugar, reemplace cada
COUNTA(R1C:R[-1]C,R[1]C:R[1024]C)+1
con simplemente[i]
, para la entrada. el token cuenta el número de celdas, sin incluirse, que contienen una fórmula, y luego agrega una, para incluirse a sí misma. Como WESRRMICGSE arrastra una fórmula de acuerdo con la entrada que le da, este token siempre da como resultado la entrada.tenemos:
Esto es mucho más legible. Vas a ver mucho el
FLOOR(LOG([i],2),1)
token, lo que simplemente significa tomar la potencia más cercana de 2, que es menor que el número input ([i]
). por ejemplo:4->4, 5->4, 6->4, 7->4, 8->8 ...etc
. Reemplazaré eso conGS[[i]]
mejor. desglosando la cláusula if, estamos probando si la fila es menor o igual a
GS[[i]]+3
, porque la altura de todas las reglas es igual a GS [[i]] + 1, esto selecciona las filas que son iguales a la altura de regla.+1
para filas de indexación 1, y+1
nuevamente para desplazamiento WESRRMICGSE.El
FALSE
resultado produce una celda vacía (""), y un resultado verdadero produceLEFT(REPT(REPT(" ",,FLOOR(POWER(2,LOG([i],2)-ROW()+2),1),1)-1) &"#",[i]),[i])
Actualmente sigue editando, estad atentos
fuente
Haskell ,
6462 bytesPruébalo en línea! Ejemplo de uso:
f 10
.fuente
k, 33 bytes
Esto solo parece funcionar en el intérprete de AW .
La versión oK (que puede probar en línea) parece tener un error, que requiere un ligero cambio para que funcione:
fuente
C #, 174 bytes
Este método tiene dos parámetros, una entrada para la longitud de la regla y una salida que es la regla como cadena.
Golfizado:
Sangrado:
Pruébalo en línea!
fuente
Func<int, string>
ahorrará algunos bytes?Carbón ,
2723 bytesPruébalo en línea! El enlace es a la versión detallada del código. Editar: guardado 4 bytes cambiando a
JumpTo
.fuente
JumpTo
(lo siento)J, 38 bytes
No es bueno. Lmk si el conteo de bytes está apagado, estoy en mi teléfono.
fuente
3
al principio se ingrese ...0|.@|:'#'#"0~1#.2~:/\i.#:@,]
Java (OpenJDK 8) , 91 bytes
Pruébalo en línea!
Sin golf:
fuente
CJam, 34 bytes
Meh
fuente
C (gcc) , 70 bytes
Pruébalo en línea!
fuente
n+~x
lugar den^x+1
Perl 5 , 60 + 1 (-n) = 61 bytes
Pruébalo en línea!
fuente