Dynamicznie twórz pudełka

22

Wyzwanie:

Narysuj prostokąt pól ASCII: []

Zasady:

Przyjmuje szerokość i wysokość

Możesz założyć, że oba są liczbami

Musi utworzyć ciąg ze znakami nowej linii, \ n

Przykłady:

2, 2:

[][]
[][]

2, 3:

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

Najmniej wygranych bajtów.

Robinlemon
źródło
2
Miły pierwszy post! Witamy w PPCG!
MD XF,
1
Czy mogę założyć, że liczby są dodatnie? Czy mogą pojawiać się nowe linie?
dzaima
@dzaima Pozytywne liczby całkowite, bez końcowych lub wiodących elementów
Robinlemon
czy możemy wydrukować na konsoli lub czy musimy zwrócić ciąg?
Giuseppe,
5
co jeśli dosłownie nie możemy nie drukować końcowych znaków nowej linii? dobrą praktyką jest dopuszczanie jednej nowej linii
Destructible Lemon

Odpowiedzi:

6

SOGL , 5 bajtów

Ƨ[]*∙

Prosty:

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

Mathematica, 26 bajtów

Grid@Table["[]",{#2},{#}]&
J42161217
źródło
Czy Gridobiekt Mathematica liczy się jako „ciąg znaków ze znakami nowej linii”?
David Zhang
4

MATL , 7 bajtów

v&DiiX"

Wypróbuj online!

Wyjaśnienie

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
źródło
4

Pyth - 7 5 bajtów

-2 bajty sprytną sztuczką dzięki insert_name_here

VE*`Y

Wypróbuj tutaj

Wyjaśnienie:

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
źródło
3
Możesz zapisać 2 bajty, używając `Y(ciąg znaków reprezentujący pustą listę) zamiast "[]".
insert_name_here
@insert_name_here Ingenious !! Zaktualizowałem odpowiedź. Dzięki za zwrócenie na to uwagi!
Maria
1
Wymyślił ten dokładny kod niezależnie. Ładnie wykonane.
isaacg
4

C, 47 46 bajtów

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

lub

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

Moja pierwsza próba gry w golfa, czy przegapiłem coś oczywistego?

dbandstra
źródło
Jest to dla 45, ale na początku ma nową linię:f(w,h){h*=w;while(h--)printf("\n[]"+!(h%w));}
Conor O'Brien
Działa to tylko wtedy, gdy szerokość wynosi 2.
dbandstra
Tak się dzieje, mój błąd
Conor O'Brien
Świetny pierwszy golf! Witamy na stronie!
MD XF
1
Czy użycie forpętli nie skróciłoby kodu jeszcze bardziej?
Spikatrix
3

05AB1E , 6 bajtów

F„[]×,

Wypróbuj online!

Wyjaśnienie

Wejście przyjmuje się jako height, width

F         # height times do
 „[]      # push "[]"
    ×     # repeat width times
     ,    # print with newline
Emigna
źródło
3

; # + , 197 bajtów

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

Wypróbuj online! Wymaga bajtu zerowego po każdym numerze wejściowym.

Nie wiem jak to działa. Mogę ci powiedzieć, że ta część kodu:

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

analizuje liczby wejściowe.

Conor O'Brien
źródło
3

pieprzenie mózgu, 145 bajtów

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

Wypróbuj online!

Mój pierwszy golf golfowy! Tak!

Dane wejściowe są w ascii + 48, więc aby zrobić 50, 50, musisz wprowadzić b, b (litery ascii dla 98)

Wyjaśnienie

+++++++++[>++++++++++<-]>+ 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
źródło
Imponujący. Witamy na stronie! :)
DJMcMayhem
Dlaczego wejście ASCII + 48? Możesz zaoszczędzić wiele bajtów, po prostu używając wejścia ASCII + 0 (możliwe połączenie z wersją ASCII + 48 pod kątem użyteczności)
CalculatorFeline
Chciałem tylko spełnić kryteria wejściowe, @calculatorFeline
vityavv,
... Och, racja. : |
CalculatorFeline
2

J , 12 bajtów

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

Wypróbuj online!

Wyjaśnienie

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

To daje nam xprzez 2yciąg powtarzających się []znaków.

Conor O'Brien
źródło
11 bajtów
Leaky Nun
2

Python 2.7, 32 bajty

Pełny program:

n,m=input()
exec"print'[]'*n;"*m

Wypróbuj online!

Koishore Roy
źródło
2

Galaretka , 7 bajtów

ẋ⁾[]ẋ$Y

Dyadyczny link zwracający listę znaków (lub pełny program wypisujący wynik).

Wypróbuj online!

W jaki sposób?

ẋ⁾[]ẋ$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
źródło
2

Siatkówka , 32 bajty

.+
$*
1(?=1*(¶1+))|.
$1
G`1
1
[]

Wypróbuj online! Pobiera dane o wysokości i szerokości w osobnych wierszach.

Neil
źródło
2

V , 7 bajtów

Ài[]<esc>ÀÄ

gdzie <esc>jest 0x1b.

Wypróbuj online!

Wyjaśnienie

Ài[]<esc>                    " arg1 times insert []
         ÀÄ                  " arg2 times duplicate this line
Kritixi Lithos
źródło
2

Ohm , 9 bajtów

M"[]"َJ,    

Wypróbuj online!

Wyjaśnienie

M"[]"َJ,
M         //Executes code input1 times
 "[]"     //Pushes []
     َ   //Duplicates [] input2 times
       J  //Joins the stack
        , //Prints with a trailing newline
Datboi
źródło
2

PowerShell, 25 bajtów

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

-3 dzięki Mathias!

colsw
źródło
Możesz skrócić go do 25 w ten sposób:param($w,$h),("[]"*$w)*$h
Mathias R. Jessen
2

Japt , 13 12 + 1 = 14 13 bajtów

+1 za -Rflagę.

"[]"pN× òU*2

Wypróbuj online

  • 1 bajt zapisany dzięki obarakon.
Kudłaty
źródło
Pijanie się
@ETHproductions: sam rysunek, którego szukałem, ale był zbyt pijany, aby go znaleźć!
Shaggy
Haha, mam nadzieję, że dobrze się bawicie. fyi, U*Vmożna skrócić do
Oliver
1
@obarakon: To 2 okazje do pracy Nzeszłej nocy. Nigdy nie pijcie i nie golfujcie, dzieci!
Shaggy
2

APL (Dyalog) , 11 bajtów

'[]'⍴⍨⊢,2×⊣

Wypróbuj online!

'[]' ciąg

⍴⍨ cyklicznie powtarzane, aby wypełnić kształt

 właściwy argument (wiersze)

, i

 dwa razy

lewy argument (kolumny)

Adám
źródło
2

Węgiel , 8 7 bajtów

EN×[]Iη

Wypróbuj online! Link jest do pełnej wersji kodu. Pobiera dane wejściowe w wysokości, szerokości zamówienia. Prymitywy rysunkowe Węgla drzewnego nie nadają się do tego, więc po prostu wychodzi to łatwo i odpowiednio powtarza []ciąg. Wyjaśnienie:

 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
źródło
Cóż, ma prymitywy rysowania dla tego, ale wciąż 8 bajtów : P
tylko ASCII
@ Tylko ASCII Niestety, nie zdawałem sobie sprawy, że Oblong pracował na dowolnych ciągach. Schludny!
Neil
@ Tylko ASCII Och, a jaka jest pełna nazwa predefiniowanej zmiennej pustego ciągu?
Neil
To w, nazwisko , grecki do verbose
ASCII tylko
@ Tylko ASCII Co tutaj robię źle: Wypróbuj online!
Neil
1

R , 70 bajtów

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

Wypróbuj online!

Zwraca anonimową funkcję, która konstruuje i zwraca ciąg.

45 bajtów, niezgodne

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

Anonimowa funkcja drukująca ciąg w żądanym formacie.

Wypróbuj to online

Giuseppe
źródło
1

Japt , 7 bajtów

6 bajtów kodu, +1 dla -Rflagi.

VÆç"[]

Nie działa w najnowszej wersji z powodu błędu ç, ale działa w zatwierdzaniuf619c52 . Przetestuj online!

Wyjaśnienie

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
ETHprodukcje
źródło
1

Idź , 74 bajty

import."strings"
func(x,y int)string{return Repeat(Repeat("[]",x)+"\n",y)}

Wypróbuj online!

całkowicie ludzki
źródło
1

QBIC , 14 bajtów

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

Wyjaśnienie:

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

To przyjmuje argumenty w kolejności # strzałki, # kol. Wyjście zaczyna się od nowej linii.

Steenbergh
źródło
1

Bash , 55 bajtów

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

Wypróbuj online! Używa smaku TIO bash, ponieważ uruchamiam Windows.

Conor O'Brien
źródło
1
Nie sądzę, że to działa w przypadku liczb wielocyfrowych
Kritixi Lithos
@KritixiLithos Powinno już działać
Conor O'Brien
1

C #, 78 bajtów

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

Uruchom w C # Pad

Jest to krótsze niż w przypadku pętli for i nie znam żadnej funkcji w języku C #, która mogłaby się powtarzać z mniejszym kodem.

Arthur Rump
źródło
1

CJam, 10 bajtów

l~"[]"*N+*

 

Esolanging Fruit
źródło
1

JavaScript (ES6), 43 36 bajtów

Z komentarzy można teraz wstawiać nowy wiersz.

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

Spróbuj

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>

Kudłaty
źródło