Los rectángulos tienen esta buena propiedad: ¡un rectángulo consta de exactamente caracteres!
Una propiedad más interesante es que los rectángulos se pueden alinear muy bien en una tabla de multiplicar, por ejemplo, una tabla :
# ## ###
# ## ###
# ## ###
# ## ###
# ## ###
# ## ###
Su desafío es, dado un número ( ), generar una tabla de multiplicación formateada .
Reglas
- Puede tomar la entrada arriba o abajo
- Se aplican las reglas de E / S predeterminadas
- Puede elegir cualquier carácter que no sea un espacio en blanco para representar los bloques; todos los demás caracteres (aunque las nuevas líneas son especiales) se consideran espacios en blanco. El carácter elegido puede ser diferente para diferentes entradas, pero debe ser el mismo en toda la entrada.
- El resultado puede tener caracteres innecesarios, siempre que la tabla se alinee y no haya ocurrencias del carácter elegido que no formen parte de la salida requerida.
- Los separadores deben tener 1 carácter de ancho / alto, y los rectángulos deben estar empaquetados (es decir, sin separadores entre sus caracteres)
- Las líneas vacías pueden estar vacías, no se requiere relleno
- El resultado puede ser una cadena, matriz, vector de líneas, matriz de matrices de caracteres o cualquier cosa 2Dish
- Alternativamente, puede generar una matriz / vector-de-vectores / cualquier cosa 2Dish de números, pero el fondo y el primer plano deben ser 2 números distintos (que pueden variar de entrada a entrada, pero no a lo largo de una salida) y no pueden estar presentes otros números. También se permiten caracteres circundantes adicionales con este formato (aunque deben coincidir con el número de fondo)
- Este es el código de golf , la respuesta más corta en bytes, por idioma, ¡gana!
Ejemplos
Para la entrada 2
, una salida válida de ascii-art, con el carácter ∙
, es:
∙ ∙∙
Result: ∙ ∙∙.
∙ ∙∙
sí, el período está ahí solo para confundirte
Otra respuesta válida como una matriz de números, siendo 2 el número de fondo y 9 el primer plano:
[[9,2,9,9,2,2],
[2,2,2,2,2,2],
[9,2,9,9,2,2],
[9,2,9,9,2,2]]
Un ejemplo de salida no válido sería
# # #
# # #
# # #
ya que los rectángulos tienen separadores entre ellos.
Ejemplo de salidas para :
# ## ### ####
# ## ### ####
# ## ### ####
# ## ### ####
# ## ### ####
# ## ### ####
# ## ### ####
# ## ### ####
# ## ### ####
# ## ### ####
1 0 1 1 0 1 1 1 0 1 1 1 1
0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 1 1 0 1 1 1 0 1 1 1 1
1 0 1 1 0 1 1 1 0 1 1 1 1
0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 1 1 0 1 1 1 0 1 1 1 1
1 0 1 1 0 1 1 1 0 1 1 1 1
1 0 1 1 0 1 1 1 0 1 1 1 1
0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 1 1 0 1 1 1 0 1 1 1 1
1 0 1 1 0 1 1 1 0 1 1 1 1
1 0 1 1 0 1 1 1 0 1 1 1 1
1 0 1 1 0 1 1 1 0 1 1 1 1
Respuestas:
Haskell , 43 bytes
Pruébalo en línea!
Un enfoque inteligente de Ørjan Johansen que genera 0 y 1, generando cada
10...00
parte como la representación de cadena de una potencia de 10.Haskell , 49 bytes
Pruébalo en línea!
Genera un patrón como
[1,0,1,0,0,1,0,0,0,...]
, luego crea un 2D tomando losmin
pares. La rareza sin puntos ahorra 2 bytes sobre los más legibles:Pruébalo en línea!
fuente
flip(map.max)=mapM max
.(->) b
, entoncesmapM :: (a -> b -> c) -> [a] -> b -> [c]
.flip(map.max)
amapM max
R ,
5654433630 bytesPruébalo en línea!
Toma la entrada uno arriba den (entonces devuelve una matriz 3x3 para n=4 ). Devuelve una matriz de 1s (primer plano) y 0s (fondo) con una fila / columna adicional de ceros al frente.
Gracias a digEmAll por -7 bytes.
fuente
JavaScript (ES6),
73 7269 bytesDevuelve una cadena compuesta de 1, espacios y saltos de línea.
Pruébalo en línea!
JavaScript (ES7),
87 8382 bytesGuardado 3 bytes gracias a @dzaima
Devuelve una matriz binaria, que se construye celda por celda.
Pruébalo en línea!
¿Cómo?
El anchow de la matriz viene dado por:
(Nota: según lo permitido por las reglas de desafío, generamos una matriz de anchow+1 ).
De manera similar, la celda ubicada en(X,Y) está vacía si la siguiente cuadrática admite una raíz entera para k=X o k=Y :
cuyo determinante es:
fuente
MATL,
1410 bytesEsta respuesta se usa
1
para los bloques y0
para el fondo.Pruébalo en MATL Online
Explicación
fuente
Jalea , 8 bytes
Pruébalo en línea!
fuente
APL (Dyalog Unicode) ,
121012 bytes SBCSPruébalo en línea!
Editar: -2 bytes de ngn. +2 bytes porque las respuestas anteriores no eran válidas (con idea gracias a ngn y dzaima).
Explicación
La salida debería verse así:
fuente
⎕
para evitar el{
}
Jalea , 7 bytes
Pruébalo en línea!
Emite una matriz de dígitos, utilizando0 0 para los rectángulos y 1 por el relleno entre ellos. El enlace TIO contiene un pie de página que formatea una matriz de dígitos de manera legible alineando las filas y columnas.
Explicación
El número en la celda( x , y) de la tabla resultante será 1 si alguno X o y es un número triangular, o 0 0 de lo contrario (porque OR bit a bit funciona como OR lógico en 0 y 1). (Usamos
R
, rango de 1, porque Jelly usa indexación basada en 1, por lo que no tenemos que preocuparnos de que la columna 0 esté incorrectamente llena de 0; tenemos que agregar 1 a la entrada porque la matriz producida por seṬ
detiene en el más grande elemento dado en la entrada, por lo que debemos dibujar una línea en el lado derecho y en la parte inferior.) Los espacios entre los números triangulares son los enteros consecutivos, por lo que los bloques rectangulares formados por los espacios entre las líneas terminan como los tamaños solicitado por la pregunta; y el uso de una operación OR (en este caso, bit a bit) permite que las líneas se crucen entre sí correctamente.fuente
05AB1E, 9 bytes
Defines a programf: Nat→List[List[Nat]] .
Code:
Uses the 05AB1E-encoding. Try it online! or use the pretty-printed version.
Explanation:
fuente
C# (Visual C# Interactive Compiler),
9695 bytes-1 byte thanks to Embodiment of Ignorance
Try it online!
fuente
n--
en lanew string
sección?Python 2 , 67 bytes
Pruébalo en línea!
Imprime líneas en blanco para líneas vacías, lo que permite el desafío.
Misma longitud (con la entrada uno arriba
n
):Pruébalo en línea!
fuente
Wolfram Language (Mathematica) , 41 bytes
Pruébalo en línea!
fuente
Carbón , 18 bytes
Pruébalo en línea! El enlace es a la versión detallada del código. Explicación:
fuente
C # (.NET Core) ,
208155bytesPruébalo en línea!
Una versión muy revisada gracias a varias personas útiles (ver los comentarios).
fuente
PowerShell ,
4240 bytes-2 bytes gracias a mazzy .
Pruébalo en línea!
fuente
Java 11, 109 bytes
Puerto de respuesta C # .NET de @ ASCII-only .
Pruébalo en línea.
fuente
repeat
método.APL + WIN, 29 bytes
Explicación:
Ejemplo:
fuente
J , 17 bytes
Pruébalo en línea!
fuente
I.
truco!Ratón-2002 , 79 bytes
Abusar de las macros del mouse para repetir la funcionalidad.
Pruébalo en línea!
fuente
Ruby , 55 bytes
Pruébalo en línea!
¿Cómo?
Primero, crea la primera línea, luego itera a través de sus caracteres. Imprima la línea completa si el carácter es '#'; de lo contrario, imprima el carácter único (que es un espacio)
fuente
Brain-Flak , 170 bytes
Pruébalo en línea!
fuente
Perl 6 ,
3533 bytesPruébalo en línea!
Llamable anónimo que toma un número e imprime la tabla de multiplicar con
*
s con una nueva línea final.Explicación:
fuente
Haskell,
6968 bytesDevuelve una matriz de números.
Pruébalo en línea!
Variantes de
f
con el mismo número de bytes:fuente
Stax , 7 bytes
Ejecutar y depurarlo
El personaje elegido es backtick. (¿Cómo codifica el formato en Markdown?)
Eso significa
a
yb
se consideran espacios en blanco extraños.fuente
MathGolf , 20 bytes
Pruébalo en línea!
MathGolf realmente necesita más funcionalidad para dividir listas y crear listas 2D.
Explicación
fuente
Tinta ,
151152151 bytesPruébalo en línea!
Lo bueno es que las reglas permiten el exceso de caracteres.
Editar: +1: Espaciado fijo. Además, muestre usando @ (que no necesita escapar) en lugar de # (que sí)
Editar: -1: Al parecer, esa solución también significaba que ya no necesitaba un período final para forzar una nueva línea en las líneas no vacías. Ordenado.
fuente
C ++,
170156 bytesGracias a dzaima
fuente
SmileBASIC,
8377 bytesSalida gráfica La entrada es
N-1
fuente
Pitón 3 ,
8883 bytes-5 bytes de Jo King
Pruébalo en línea!
fuente
l
fuera del bucle. Pruébalo en línea!Perl 6, 63 bytes
fuente
.join(' ')
no hace nada,'#'
puede ser\*
en su lugar, las cadenas de nueva línea pueden usar nuevas líneas literales, ambasl.map(str x*)
pueden ser(str Xx l)
en su lugar. 38 bytesC (gcc) ,
108104bytes-4 bytes gracias a ceilingcat
Pruébalo en línea!
fuente