Crear cajas dinámicamente

22

El reto:

Dibuja un rectángulo de cuadros ASCII: []

Las normas:

Toma un ancho y una entrada de altura

Puedes asumir que ambos son números

Debe producir una cadena con caracteres de nueva línea, \ n

Ejemplos:

2, 2:

[][]
[][]

2, 3:

[][]
[][]
[][]

Fewest Bytes gana.

Robinlemon
fuente
2
Bonito primer post! Bienvenido a PPCG!
MD XF
1
¿Puedo suponer que los números son positivos? ¿Puede haber nuevas líneas finales?
dzaima
@dzaima Enteros positivos, sin elementos finales o principales
Robinlemon
¿podemos imprimir en la consola o necesitamos devolver la cadena?
Giuseppe
55
¿Qué pasa si, literalmente, no podemos no imprimir nuevas líneas finales? tiende a ser una buena práctica permitir una nueva línea final
Destructible Lemon

Respuestas:

6

SOGL , 5 bytes

Ƨ[]*∙

Simple:

Ƨ[]    push "[]"
   *   multiply horizontally (repeating width times)
    ∙  get an array with input (height) items of that
       implicitly output the array joined with newlines
dzaima
fuente
4

Mathematica, 26 bytes

Grid@Table["[]",{#2},{#}]&
J42161217
fuente
¿Un Gridobjeto de Mathematica cuenta como "una cadena con caracteres de nueva línea"?
David Zhang
4

MATL , 7 bytes

v&DiiX"

Pruébalo en línea!

Explicación

v    % Concatenate the (non-existing) stack contents: gives []
&D   % String representation: gives '[]'
ii   % Take two inputs
X"   % Repeat those numbers of times vertically and horizontally. Implicit display
Luis Mendo
fuente
4

Pyth - 7 5 bytes

-2 bytes por un truco inteligente gracias a insert_name_here

VE*`Y

Pruébalo aquí

Explicación:

VE*`Y
V      # Loop
 E     # <input> number of times
   `Y  # String representation of empty list (used to be "[]", but insert_name_here pointed out this shorter alternative)
  *    # repeat string implicit input number of times
       # implicit print
Maria
fuente
3
Puede guardar 2 bytes usando `Y(representación de cadena de lista vacía) en lugar de "[]".
insert_name_here
@insert_name_here Ingenioso !! Actualicé la respuesta. ¡Gracias por señalar eso!
Maria
1
Se me ocurrió este código exacto de forma independiente. Bien hecho.
isaacg
4

C, 47 46 bytes

f(w,h){for(h*=w;h--;)printf(h%w?"[]":"[]\n");}

o

f(w,h){for(h*=w;h--;)printf("[]%c",h%w?0:10);}

Mi primer intento de código de golf, ¿me perdí algo obvio?

dbandstra
fuente
Hay 45 para esto, pero tiene una nueva línea al principio:f(w,h){h*=w;while(h--)printf("\n[]"+!(h%w));}
Conor O'Brien
Eso solo funciona cuando el ancho es 2.
dbandstra
Así es, mi error
Conor O'Brien
Gran primer golf! Bienvenido al sitio!
MD XF
1
¿El uso de un forciclo no acortaría aún más el código?
Spikatrix
3

05AB1E , 6 bytes

F„[]×,

Pruébalo en línea!

Explicación

La entrada toma como height, width

F         # height times do
 „[]      # push "[]"
    ×     # repeat width times
     ,    # print with newline
Emigna
fuente
3

; # + , 197 bytes

>;;;;;;~++++++++:>~;;;;:>~*(-:~<~+-::>-:::<~<-+++++++++~:::<~+-:::>-::*)-::<-::::>-::(;)::>-::*(-:~<~+-::>-:::<~<-+++++++++~:::<~+-:::>-::*)-:<~<;;;;;-+>-:<-:-(-:::~<-:::(~<#<-;;-#~;)-:<#-::<;>-:-)

Pruébalo en línea! Requiere un byte cero después de cada número de entrada.

No sé cómo funciona esto. Lo que puedo decirte es que esta parte del código:

 *(-:~<~+-::>-:::<~<-+++++++++~:::<~+-:::>-::*)-::<-::::>-::(;)::>-::*(-:~<~+-::>-:::<~<-+++++++++~:::<~+-:::>-::*)

está analizando los números de entrada.

Conor O'Brien
fuente
3

brainfuck, 145 bytes

+++++++++[>++++++++++<-]>+[>+>+<<-]>>++>,>+++++++++[<----->-]<--->>>,>+++++++++[<----->-]<--->++++++++++<[<<<[>+>+<<-]>[<<<.>.>>-]>[<<+>>-]>>.<-]

Pruébalo en línea!

¡Mi primer código de golf! ¡Hurra!

La entrada está en ascii + 48, por lo que para hacer 50, 50 debe ingresar b, b (las letras ascii para 98)

Explicación

+++++++++[>++++++++++<-]>+ Get the opening square bracket into first position
[>+>+<<-] Get it into the second and third position
>>++ Get the third position to be the closing bracket
>
,>+++++++++[<----->-]<--- Get first number into fourth cell
>>>
,>+++++++++[<----->-]<--- Get second number into seventh cell
>++++++++++ get newline into 8th position
<

[ Start our height loop
<<<[>+>+<<-] Get the width into the fifth and sixth positions
>[ Start our width loop at the fifth position
<<<.>. Print the second and third positions
>>-] Decrement the fifth position
>
[<<+>>-] copy the sixth position into the fourth position
>>. print newline
<-]
vityavv
fuente
Impresionante. Bienvenido al sitio! :)
DJMcMayhem
¿Por qué es la entrada ASCII + 48? Puede guardar muchos bytes simplemente usando la entrada ASCII + 0 (posiblemente vinculando a la versión ASCII + 48 para usabilidad)
CalculatorFeline
Solo quería cumplir con los criterios de entrada, @calculatorFeline
vityavv
...Correcto. : |
CalculatorFeline
2

J , 12 bytes

'[]'$~],+:@[

Pruébalo en línea!

Explicación

'[]'$~],+:@[   input: y, x
        +:@[   double y
      ],       pair with x
               this gives (x, 2y)
    $~         shape the left argument into the right argument's shape
'[]'           2-length character string

Esto nos da una xpor 2ycadena de repetir []caracteres.

Conor O'Brien
fuente
11 bytes
Leaky Nun
2

Jalea , 7 bytes

ẋ⁾[]ẋ$Y

Un enlace diádico que devuelve una lista de caracteres (o un programa completo que imprime el resultado).

Pruébalo en línea!

¿Cómo?

ẋ⁾[]ẋ$Y - Main link: number w, number h          e.g. 2, 3
ẋ       - repeat w h times                            [2,2,2]
     $  - last two links as a monad:
 ⁾[]    -   literal ['[',']'],                        "[]"
    ẋ   -   repeat list (vectorises)                  ["[][]","[][]","[][]"]
      Y - join with newlines                          "[][]\n[][]\n[][]"
        - if a full program, implicit print
Jonathan Allan
fuente
2

V , 7 bytes

Ài[]<esc>ÀÄ

donde <esc>está 0x1b.

Pruébalo en línea!

Explicación

Ài[]<esc>                    " arg1 times insert []
         ÀÄ                  " arg2 times duplicate this line
Kritixi Lithos
fuente
2

Ohm , 9 bytes

M"[]"َJ,    

Pruébalo en línea!

Explicación

M"[]"َJ,
M         //Executes code input1 times
 "[]"     //Pushes []
     َ   //Duplicates [] input2 times
       J  //Joins the stack
        , //Prints with a trailing newline
Datboi
fuente
2

PowerShell, 25 bytes

param($w,$h),("[]"*$w)*$h

-3 gracias a Mathias!

colsw
fuente
Puede acortarlo a 25 así:param($w,$h),("[]"*$w)*$h
Mathias R. Jessen
2

Japt , 13 12 + 1 = 14 13 bytes

+1 para la -Rbandera.

"[]"pN× òU*2

Pruébalo en línea

  • 1 byte guardado gracias a obarakon.
Lanudo
fuente
Sin embargo, estar un poco borracho a veces puede ayudarlo con sus habilidades de programación : P
ETHproductions
@ETHproductions: ¡la caricatura que estaba buscando pero estaba demasiado borracha para encontrar!
Shaggy
Jaja, espero que tengan una noche divertida. digo, U*Vse puede acortar a
Oliver
1
@obarakon: Eso es 2 oportunidades para trabajar Nanoche. ¡Nunca beban y jueguen al golf, niños!
Shaggy
2

APL (Dyalog) , 11 bytes

'[]'⍴⍨⊢,2×⊣

Pruébalo en línea!

'[]' la cuerda

⍴⍨ repetido cíclicamente para llenar la forma

 argumento correcto (filas)

, y

 dos veces

el argumento izquierdo (columnas)

Adán
fuente
2

Carbón , 8 7 bytes

EN×[]Iη

Pruébalo en línea! El enlace es a la versión detallada del código. Toma entrada en el orden alto, ancho. Las primitivas de dibujo de carbón no son adecuadas para esto, por lo que esto simplemente toma la salida fácil y repite la []secuencia de manera apropiada. Explicación:

 N      First input as a number
E       Map over implcit range
      η Second input
     I  Cast to number
   []   Literal string
  ×     Repeat
        Implicitly print on separate lines
Neil
fuente
Bueno, tiene primitivas de dibujo para esto pero aún 8 bytes : P
Solo ASCII
@ Solo ASCII Lo siento, no me di cuenta de que Oblong trabajaba en cadenas arbitrarias. ¡Ordenado!
Neil
@ Solo ASCII Oh, y ¿cuál es el nombre detallado de la variable de cadena vacía predefinida?
Neil
Es w, nombre , griego a verboso
solo ASCII el
@ Solo ASCII Entonces, ¿qué estoy haciendo mal aquí: Pruébelo en línea!
Neil
1

R , 70 bytes

p=paste
function(w,h)p(rep(p(rep('[]',w),collapse=''),h),collapse='
')

Pruébalo en línea!

Devuelve una función anónima que construye y devuelve la cadena.

45 bytes, no conforme

function(w,h)write(matrix('[]',w,h),'',w,,'')

Una función anónima que imprime la cadena en el formato deseado.

Prueba esto en línea

Giuseppe
fuente
1

Japt , 7 bytes

6 bytes de código, +1 para la -Rbandera.

VÆç"[]

No funciona en la última versión debido a un error con ç, pero funciona en commitf619c52 . ¡Pruébelo en línea!

Explicación

VÆ   ç"[]
VoX{Uç"[]"}  // Ungolfed
             // Implicit: U, V = input integers
VoX{      }  // Create the range [0...V) and replace each item X with
    Uç"[]"   //   U copies of the string "[]".
-R           // Join the result with newlines.
             // Implicit: output result of last expression
ETHproducciones
fuente
1

QBIC , 14 bytes

[:|?[:|?@[]`';

Explicación:

[:|     FOR a = 1 to (read input from cmd line)
?       PRINT a newlne
[:|     FOR c = 1 to (read input from cmd line)
?@[]`   PRINT A$ (containing the box)
';         and inject a semicolon in the compiled QBasic code to suppress newlines

Esto toma sus argumentos en el orden de #rows, #cols. La salida comienza con una nueva línea.

Steenbergh
fuente
1

Bash , 55 bytes

seq $(($1*$2))|sed s/.*/[]/|tr -d "
"|fold -w $(($1*2))

Pruébalo en línea! Utiliza el sabor TIO de bash, ya que ejecuto windows.

Conor O'Brien
fuente
1
No creo que esto funcione para números de varios dígitos
Kritixi Lithos
@KritixiLithos Debería funcionar ahora
Conor O'Brien
1

C #, 78 bytes

(w,h)=>"".PadLeft(h).Replace(" ","".PadLeft(w).Replace(" ","[]")+'\n').Trim();

Ejecutar en C # Pad

Esto es más corto que con for-loops y no conozco ninguna función en C # que pueda repetirse con menos código.

Arthur Rump
fuente
1

CJam, 10 bytes

l~"[]"*N+*

 

Fruta Esolanging
fuente
1

JavaScript (ES6), 43 36 bytes

De los comentarios, ahora se permite una nueva línea final.

w=>h=>("[]".repeat(w)+`
`).repeat(h)

Intentalo

f=
w=>h=>("[]".repeat(w)+`
`).repeat(h)
oninput=_=>o.innerText=f(+i.value)(+j.value);o.innerText=f(i.value=2)(j.value=2)
*{font-family:sans-serif;}
input{margin:0 5px 0 0;width:50px;}
<label for=i>w: </label><input id=i type=number><label for=j>h: </label><input id=j type=number><pre id=o>

Lanudo
fuente