Créer dynamiquement des boîtes


22

Le défi:

Dessinez un rectangle de cases ASCII: []

Les règles:

Prend une entrée de largeur et de hauteur

Vous pouvez supposer que ce sont des nombres

Doit produire une chaîne avec des caractères de nouvelle ligne, \ n

Exemples:

2, 2:

[][]
[][]

2, 3:

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

Le moins d'octets gagne.


2
Bon premier post! Bienvenue chez PPCG!
MD XF

1
Puis-je supposer que les chiffres sont positifs? Peut-il y avoir des nouvelles lignes de fuite?
dzaima

@dzaima Entiers positifs, aucun élément de fin ou de
début

pouvons-nous imprimer sur la console ou devons-nous renvoyer la chaîne?
Giuseppe

5
que faire si nous ne pouvons littéralement pas ne pas imprimer de nouvelles lignes de fin? cela a tendance à être une bonne pratique d'autoriser une nouvelle ligne à la fin
Destructible Lemon

Réponses:


6

SOGL , 5 octets

Ƨ[]*∙

Simple:

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

4

Mathematica, 26 octets

Grid@Table["[]",{#2},{#}]&

Un Gridobjet Mathematica compte-t-il comme "une chaîne avec des caractères de nouvelle ligne"?
David Zhang

4

MATL , 7 octets

v&DiiX"

Essayez-le en ligne!

Explication

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

4

Pyth - 7 5 octets

-2 octets par une astuce astucieuse grâce à insert_name_here

VE*`Y

Essayez-le ici

Explication:

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

3
Vous pouvez enregistrer 2 octets à l'aide de `Y(représentation sous forme de chaîne de la liste vide) au lieu de "[]".
insert_name_here

@insert_name_here Ingenious !! J'ai mis à jour la réponse. Merci d'avoir fait remarquer cela!
Maria

1
Entré avec ce code exact indépendamment. Bien fait.
isaacg

4

C, 47 46 octets

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

ou

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

Ma première tentative de golf par code, ai-je raté quelque chose d'évident?


Il y en a pour 45, mais il y a une nouvelle ligne au début:f(w,h){h*=w;while(h--)printf("\n[]"+!(h%w));}
Conor O'Brien

Cela ne fonctionne que lorsque la largeur est de 2.
dbandstra

C'est le cas, mon erreur
Conor O'Brien

Super premier golf! Bienvenue sur le site!
MD XF

1
L'utilisation d'une forboucle ne raccourcirait -elle pas encore plus le code?
Spikatrix

3

05AB1E , 6 octets

F„[]×,

Essayez-le en ligne!

Explication

L'entrée prend comme height, width

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

3

; # + , 197 octets

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

Essayez-le en ligne! Nécessite un octet zéro après chaque numéro d'entrée.

Je ne sais pas comment ça marche. Ce que je peux vous dire, c'est que cette partie du code:

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

analyse les numéros d'entrée.


3

brainfuck, 145 octets

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

Essayez-le en ligne!

Mon tout premier golf à code! Yay!

L'entrée est en ascii + 48, donc pour faire 50, 50 vous devez entrer b, b (les lettres ascii pour 98)

Explication

+++++++++[>++++++++++<-]>+ 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
<-]

Impressionnant. Bienvenue sur le site! :)
DJMcMayhem

Pourquoi l'entrée ASCII + 48? Vous pouvez économiser beaucoup d'octets en utilisant simplement l'entrée ASCII + 0 (éventuellement en vous connectant à la version ASCII + 48 pour plus de convivialité)
CalculatorFeline

Je voulais juste répondre aux critères de saisie, @calculatorFeline
vityavv

... Ah oui. : |
CalculatorFeline

2

J , 12 octets

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

Essayez-le en ligne!

Explication

'[]'$~],+:@[   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

Cela nous donne une xpar 2ychaîne de répétition des []caractères.




2

Gelée , 7 octets

ẋ⁾[]ẋ$Y

Un lien dyadique renvoyant une liste de caractères (ou un programme complet imprimant le résultat).

Essayez-le en ligne!

Comment?

ẋ⁾[]ẋ$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




2

Ohm , 9 octets

M"[]"َJ,    

Essayez-le en ligne!

Explication

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

2

PowerShell, 25 octets

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

-3 merci à Mathias!


Vous pouvez le raccourcir à 25 comme ceci:param($w,$h),("[]"*$w)*$h
Mathias R. Jessen

2

Japt , 13 12 + 1 = 14 13 octets

+1 pour le -Rdrapeau.

"[]"pN× òU*2

Essayez-le en ligne

  • 1 octet économisé grâce à obarakon.


@ETHproductions: le dessin animé que je cherchais mais j'étais trop ivre pour le trouver!
Shaggy

Haha, j'espère que vous passez une bonne soirée. fyi, U*Vpeut être raccourci à
Oliver

1
@obarakon: C'est 2 opportunités de travailler avec Nhier soir. Jamais boire et jouer au golf, les enfants!
Shaggy

2

APL (Dyalog) , 11 octets

'[]'⍴⍨⊢,2×⊣

Essayez-le en ligne!

'[]' la chaîne

⍴⍨ répété cycliquement pour remplir la forme

 argument de droite (lignes)

, et

 deux fois

l'argument de gauche (colonnes)


2

Fusain , 8 7 octets

EN×[]Iη

Essayez-le en ligne! Le lien est vers la version détaillée du code. Prend la saisie dans l'ordre hauteur, largeur. Les primitives de dessin de Charcoal ne sont pas adaptées à cela, donc cela prend simplement le chemin facile et répète la []chaîne de manière appropriée. Explication:

 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

Eh bien, il a des primitives de dessin pour cela, mais toujours 8 octets : P
ASCII uniquement

@ ASCII uniquement Désolé, je ne savais pas que Oblong fonctionnait sur des chaînes arbitraires. Soigné!
Neil

@ ASCII uniquement Oh, et quel est le nom détaillé de la variable de chaîne vide prédéfinie?
Neil


@ ASCII uniquement Alors qu'est-ce que je fais de mal ici: Essayez-le en ligne!
Neil

1

R , 70 octets

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

Essayez-le en ligne!

Renvoie une fonction anonyme qui construit et renvoie la chaîne.

45 octets, non conforme

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

Une fonction anonyme qui imprime la chaîne au format souhaité.

Essayez ceci en ligne


1

Japt , 7 octets

6 octets de code, +1 pour le -Rdrapeau.

VÆç"[]

Ne fonctionne pas dans la dernière version en raison d'un bogue avec ç, mais il fonctionne en commitf619c52 . Testez-le en ligne!

Explication

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


1

QBIC , 14 octets

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

Explication:

[:|     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

Cela prend ses arguments dans l'ordre des #rows, #cols. La sortie commence par une nouvelle ligne.




1

C #, 78 octets

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

Exécuter en C # Pad

C'est plus court qu'avec les boucles for et je ne connais aucune fonction en C # qui puisse se répéter avec moins de code.



1

JavaScript (ES6), 43 36 octets

D'après les commentaires, une nouvelle ligne de fin est désormais autorisée.

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

Essayez-le

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>



En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.