Su tarea es generar cuadros usando cualquier carácter ASCII con respecto a las entradas dadas.
Casos de prueba
1 1 --> =====
= =
=====
1 2 --> =========
= = =
=========
2 1 --> =====
= =
=====
= =
=====
2 2 --> =========
= = =
=========
= = =
=========
2 5 --> =====================
= = = = = =
=====================
= = = = = =
=====================
Entrada
La entrada puede tomarse de uno de los siguientes
stdin
- Argumentos de línea de comando
- Argumentos de función (2 argumentos, uno para cada número)
La entrada, si se toma de los
stdin
argumentos de la línea de comandos, contendrá dos enteros positivos, separados por un espacio.- Los dos números denotan el número de cuadros en cada columna y fila.
Salida
- Las cajas deben enviarse
stdout
(o el equivalente más cercano) - Cada caja debe tener tres espacios horizontales.
Reglas
- Ambos números serán mayores que 0, pero no irán más allá de 1000
- Cualquier carácter visible se puede utilizar para generar los cuadros. (¡siempre y cuando no sean demasiado duros para la vista!)
- Se le permite escribir un programa completo o una función.
- No debe haber caracteres innecesarios, excepto un carácter opcional de línea nueva.
Puntuación
Este es el código de golf , por lo que gana el envío más corto (en bytes).
JavaScript ( ES6 ), 83
Una función con parámetros de filas y columnas. Usando cadenas de plantilla, hay 2 nuevas líneas incrustadas que son significativas y contadas.
Salida a través de
alert
(ventana emergente). Alalert
usar una fuente proporcional, obtenemos un mejor resultado usando una letra con un ancho similar al espacio en lugar de=
.Pruebe en Firefox usando la consola para obtener la
alert
salida real , o ejecute el fragmento a continuación.fuente
Test in Firefox
JavaScript (ES6),
7573Usando
repeat
llamadas copiosas , repetimos|
, luego repetimos|
con espacios finales, y repetimos ambas repeticiones para hacer filas:(Las nuevas líneas son significativas, según la sugerencia de edc65 de usar cadenas de plantillas).
Retazo:
Sin cadenas de plantilla, sin reutilización del nombre del método y con espacios en blanco agregados:
(Usando la recomendación de edc65 para usar
|
para un mejor espaciado visual).fuente
Pip,
2924 = 23 + 1 bytesRequiere la
-n
bandera. Toma la altura y el ancho como argumentos de línea de comandos y construye cajas de1
s.Explicación:
Este programa aprovecha mucho el hecho de que las cadenas son números y los números son cadenas en Pip. (¡Y los tres espacios en esos cuadros resultaron ser perfectos para aprovechar la
m
variable incorporada !)Así es como la lista se construye con la entrada
2 3
:Y el resultado final:
Más sobre Pip
fuente
Perl,
72635250 bytesMi versión más corta todavía se usa
$/
para obtener un carácter de nueva línea de forma más compacta:La actualización anterior coloca las líneas en su mayoría vacías en el separador de registros de salida
$,
e imprime una lista de líneas continuas.La versión anterior podría ser un poco más clara para el lector casual:
La primera versión utilizada en
@ARGV
lugar depop
:fuente
Python 2,
5857 BytesImplementación bastante sencilla.
Compruébalo aquí.
Gracias a Sp3000 por guardar un byte.
fuente
GNU sed -r, 160
Suspiro, pensé que esto sería más pequeño, pero aquí está de todos modos. Desafortunadamente, las expresiones regulares sed no tienen ninguna capacidad de búsqueda.
Tomando entrada como unario de STDIN:
fuente
CJam, 25 bytes
Pruébelo en línea en el intérprete de CJam .
Cómo funciona
fuente
Maravilloso, 168 bytes
Esta respuesta solo funciona hasta 255x255, no 1000x1000, debido a las limitaciones del lenguaje Marbelous. Estoy trabajando en una biblioteca de 32 bits, pero no estará lista pronto.
La entrada se proporciona como dos parámetros de línea de comando o parámetros de función a la placa principal.
Pseudocódigo:
fuente
CJam
52514641 bytesGracias a Sp3000 por -5 caracteres
Gracias a Martin Büttner ♦ por otros 5 caracteres
Intentalo
fuente
función c, 81
Programa de prueba:
fuente
x;f(h,w){for(w=w*4+2;x<=w*h*2+w;x++)putchar(x%w?x/w%2?x%w%4!=1?32:61:61:10);}
- 78PHP4.1,
767169 bytesEsto es lo más golfizado que puedo conseguir.
Esto espera que la clave
H
tenga el número de líneas yV
el número de cuadros por línea.Estoy usando
-
y|
solo para que las cajas realmente parezcan cajas. Si es necesario, puedo cambiarlo a=
. No importa el carácter que se use.Salir
-
y|
también ayuda a comprender el desorden que está sucediendo.Método antiguo, 76 bytes:
Ejemplo de salida:
fuente
Julia, 59 bytes
Esto crea una función sin nombre que acepta dos enteros como entrada e imprime el resultado en STDOUT. Para llamarlo, dale un nombre, por ejemplo
f=(n,m)->...
.Ungolfed + explicación:
Ejemplos:
Cualquier sugerencia es bienvenida.
fuente
bash + coreutils, 57
Esto se utiliza
dc
para imprimir números binarios que tienen1
s para los bordes del cuadro ys0
para los espacios.2 ^ (width * 4 + 1) - 1
, luego se empuja e imprime10001...0001
número se calcula por , luego se empujaX
* 8 / 15 + 1
height
vecesEl
tr
convierte los0
s de caracteres de espacio.Salida
fuente
R,
8381Como una función sin nombre que toma h y w como parámetros. Construye la primera y segunda línea en un vector para cada fila y la replica
h
veces. Agrega un vector para la línea inferior ycat
s del vector usandofill
para restringir la longitud de las líneas. Ahora aprovecha la regla de cualquier personaje visible.Prueba de funcionamiento
fuente
Python
32,160878579 bytesSé que esto se puede jugar mucho más al golf, me gustaría algunas sugerencias ya que este es mi primer intento en el golf.
Gracias a los consejos de @Cool Guy y @ Sp3000, reduje el tamaño a poco
más de lamitad.Por ejemplo: d (3,3)
Pruébalo aquí .
Disculpe los espacios en blanco finales.
fuente
'='*(4*y+1)
w=4*y+1
ahorra 3 bytes.KDB (Q), 37 bytes
Explicación
Prueba
fuente
JavaScript,
9285 bytesEsperaba que esto fuera más corto que la otra respuesta de JS (buen trabajo como siempre, edc65), pero bueno. Tengo la sensación de que las matemáticas aquí se pueden jugar más.
fuente
f=(r,c)=>(x=>{for(i=s='';(y=i++/x)<r-~r;)s+=i%x?' *'[-~y%2|!(-~i%4)]:'\n'})(4*c+2)||s
-> 852*r+1
=>r-~r
son exactamente lo que quise decir con jugar a las matemáticas, y esa en particular es genial. :)Octava,
69sesenta y cinco64Gracias a DLosc por señalar los problemas que llevaron a -1
Toma entrada como
[1 1]
y salidas:También puede ingresar '1' y obtener 1x1. Si la entrada realmente necesita ser
1 1
, el tamaño sube a888584 :Nota: Matlab no permite el encadenamiento o la entrada de Octave (entero), pero aquí está la versión de Matlab ( 67 ):
fuente
C, 76 bytes
Se invoca como una función con número de filas y columnas como argumentos. Por ejemplo:
fuente
CJam,
3029 bytesNueva versión con redundante
+
al final eliminado (gracias, Dennis):Sé que Dennis ya publicó una solución CJam que supera esto por millas. Pero este es mi primer intento en CJam, por lo que es un milagro que funcione. :)
Bastante fuerza bruta. Construye la primera línea a partir de
4 * H + 1
=
signos, luego la segunda línea a partir de tiempos=
repetidosH
, con otra=
agregada. Luego concatena las dos líneas, repite todo elV
tiempo y luego agrega otra copia de la primera línea.Parece que tengo demasiadas manipulaciones de la pila, e incluso terminé almacenando la primera línea en una variable porque tenía que barajar las cosas en la pila aún más.
No es muy elegante en general, pero tienes que comenzar en alguna parte ... y quería probar un problema simple primero.
fuente
+
al final. CJam imprime toda la pila.CJam, 23
Pruébalo en línea
Explicación:
fuente
Dart, 57
Pruébelo en: https://dartpad.dartlang.org/36ed632613395303ef51
fuente
Java, 181
Espero que segun
cumple con las reglas para contar los bytes de la función , que es 181 en este caso
fuente
for(r=R;r-->0;){x=y=e;for(c=C;c-->0;){x+=a;y+="= ";}s+=x+n+y+n;}
afor(r=R;r-->0;s+=x+n+y+n){x=y=e;for(c=C;c-->0;y+="= "){x+=a;}}
C #,
153151150Esto realmente no puede competir, pero aquí es solo por diversión:
Como correr:
Abierto a mejoras.
fuente
int
s fuera del bucle puede guardar un byte.Python 2.7, 66 bytes.
Sé que ya hay mejores soluciones en Python, pero eso es lo mejor que se me ocurrió.
Ejemplo:
fuente
Rubí,
574845Uso:
Gracias a manatwork por guardar 3 bytes.
fuente
'='
→?=
y"<LF>"
→$/
.?=*(w*4+1)
→?=+?=*w*4
Java,
123119 bytesAbusar de los parámetros de entrada como contadores ayudó mucho a disminuir el tamaño del código.
Gracias a Cool Guy por sugerir el abuso de la sintaxis.
fuente
for
bucle en lugar de unwhile
bucle.while(w-->0){d+=" =";b+="====";}
for(;w-->0;b+="====")d+=" =";
SAS,
117119Ejemplo:
Resultado:
fuente
DNS_PROBE_FINISHED_NXDOMAIN