Tự động tạo hộp


22

Các thách thức:

Vẽ một hình chữ nhật của các hộp ASCII: []

Những quy định:

Có chiều rộng và chiều cao đầu vào

Bạn có thể giả sử cả hai đều là số

Phải tạo một chuỗi có các ký tự dòng mới, \ n

Ví dụ:

2, 2:

[][]
[][]

2, 3:

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

Ít nhất Byte thắng.


2
Bài đăng đầu tiên rất hay! Chào mừng đến với PPCG!
MD XF

1
Tôi có thể cho rằng những con số là tích cực? Có thể có dấu vết mới?
dzaima

@dzaima Số nguyên dương, không có dấu vết hoặc công cụ hàng đầu
Robinlemon

chúng ta có thể in ra bàn điều khiển hay chúng ta cần trả về chuỗi?
Giuseppe

5
Điều gì xảy ra nếu chúng ta thực sự không thể in các dòng mới? nó có xu hướng là một thực tiễn tốt để cho phép một dòng mới theo dõi
Lemon

Câu trả lời:


6

SOGL , 5 byte

Ƨ[]*∙

Đơn giản:

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

4

Toán học, 26 byte

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

Một Gridđối tượng Mathicala có được tính là "một chuỗi với các ký tự dòng mới" không?
David Zhang

4

MATL , 7 byte

v&DiiX"

Hãy thử trực tuyến!

Giải trình

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 byte

-2 byte bằng một mẹo thông minh nhờ insert_name_here

VE*`Y

Hãy thử nó ở đây

Giải trình:

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
Bạn có thể lưu 2 byte bằng cách sử dụng `Y(biểu diễn chuỗi của danh sách trống) thay vì "[]".
insert_name_here

@insert_name_here Khéo léo !! Tôi cập nhật câu trả lời. Cảm ơn đã chỉ ra rằng!
Maria

1
Đã đến với mã chính xác này một cách độc lập. Hoàn thành tốt
isaacg

4

C, 47 46 byte

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

hoặc là

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

Lần thử golf đầu tiên của tôi, tôi đã bỏ lỡ điều gì rõ ràng?


Có cái này cho 45, nhưng nó có một dòng mới ở đầu:f(w,h){h*=w;while(h--)printf("\n[]"+!(h%w));}
Conor O'Brien

Điều đó chỉ hoạt động khi chiều rộng là 2.
dbandstra

Vì vậy, đó là sai lầm của tôi
Conor O'Brien

Golf đầu tiên tuyệt vời! Chào mừng đến với trang web!
MD XF

1
Sẽ không sử dụng một forvòng lặp rút ngắn mã hơn nữa?
Spikatrix


3

; # + , 197 byte

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

Hãy thử trực tuyến! Yêu cầu một byte bằng không sau mỗi số đầu vào.

Tôi không biết làm thế nào điều này hoạt động. Những gì tôi có thể nói với bạn là phần này của mã:

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

đang phân tích các số đầu vào.


3

Brainfuck, 145 byte

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

Hãy thử trực tuyến!

Golf mã đầu tiên của tôi! Yay!

Đầu vào là ascii + 48, vì vậy để thực hiện 50, 50, bạn phải nhập b, b (các chữ cái ascii cho 98)

Giải trình

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

Ấn tượng. Chào mừng đến với trang web! :)
DJMcMayhem

Tại sao đầu vào ASCII + 48? Bạn có thể tiết kiệm rất nhiều byte chỉ bằng cách sử dụng đầu vào ASCII + 0 (có thể liên kết với phiên bản ASCII + 48 để sử dụng được)
CalculatorFeline

Tôi chỉ muốn đáp ứng các tiêu chí cho đầu vào, @calculatorFeline
vityavv

...Ô đung rôi. : |
Máy

2

J , 12 byte

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

Hãy thử trực tuyến!

Giải trình

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

Điều này cho chúng ta một xbằng 2ychuỗi lặp lại []ký tự.




2

Thạch , 7 byte

ẋ⁾[]ẋ$Y

Một liên kết dyadic trả về một danh sách các ký tự (hoặc một chương trình đầy đủ in kết quả).

Hãy thử trực tuyến!

Làm sao?

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

, 9 byte

M"[]"َJ,    

Hãy thử trực tuyến!

Giải trình

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

2

PowerShell, 25 byte

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

-3 cảm ơn Mathias!


Bạn có thể rút ngắn nó xuống còn 25 như vậy:param($w,$h),("[]"*$w)*$h
Mathias R. Jessen

2

Japt , 13 12 + 1 = 14 13 byte

+1 cho -Rcờ.

"[]"pN× òU*2

Dùng thử trực tuyến

  • Lưu 1 byte nhờ obarakon.


@ETHproductions: bộ phim hoạt hình mà tôi đang tìm kiếm nhưng đã quá say để tìm!
Shaggy

Haha, hy vọng các bạn đang có một đêm vui vẻ. fyi, U*Vcó thể rút ngắn thành
Oliver

1
@obarakon: Đó là 2 cơ hội để làm việc Ntối qua. Không bao giờ uống & chơi gôn, trẻ em!
Shaggy

2

APL (Dyalog) , 11 byte

'[]'⍴⍨⊢,2×⊣

Hãy thử trực tuyến!

'[]' chuỗi

⍴⍨ lặp đi lặp lại theo chu kỳ để điền vào hình dạng

 đối số đúng (hàng)

, và

 hai lần

đối số bên trái (cột)


2

Than , 8 7 byte

EN×[]Iη

Hãy thử trực tuyến! Liên kết là phiên bản dài dòng của mã. Đưa đầu vào theo thứ tự chiều cao, chiều rộng. Nguyên thủy vẽ của than củi không phù hợp với điều này, vì vậy điều này chỉ cần thực hiện một cách dễ dàng và lặp lại []chuỗi một cách thích hợp. Giải trình:

 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

Chà, nó đã vẽ nguyên thủy cho cái này nhưng vẫn còn 8 byte : P
ASCII - chỉ

Chỉ có ASCII Xin lỗi, tôi đã không nhận ra rằng Oblong hoạt động trên các chuỗi tùy ý. Khéo léo!
Neil

@ ASCII-only Oh, và tên dài dòng của biến chuỗi rỗng được xác định trước là gì?
Neil


@ ASCII-only Sau đó, tôi đang làm gì sai ở đây: Hãy thử trực tuyến!
Neil

1

R , 70 byte

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

Hãy thử trực tuyến!

Trả về một hàm ẩn danh xây dựng và trả về chuỗi.

45 byte, không tuân thủ

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

Một hàm ẩn danh in ra chuỗi theo định dạng mong muốn.

Hãy thử trực tuyến


1

Japt , 7 byte

6 byte mã, +1 cho -Rcờ.

VÆç"[]

Không hoạt động trong phiên bản mới nhất do lỗi với ç, nhưng nó hoạt động trong cam kếtf619c52 . Kiểm tra nó trực tuyến!

Giải trình

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 byte

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

Giải trình:

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

Điều này nhận các đối số của nó theo thứ tự #rows, #cols. Đầu ra bắt đầu với một dòng mới.




1

C #, 78 byte

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

Chạy trong C # Pad

Thời gian này ngắn hơn so với vòng lặp for và tôi không biết bất kỳ chức năng nào trong C # có thể lặp lại với ít mã hơn.



1

JavaScript (ES6), 43 36 byte

Từ các ý kiến, một dòng mới kéo dài được cho phép.

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

Thử nó

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>



Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.