ボックスを動的に作成する


22

チャレンジ:

ASCIIボックスの長方形を描きます:[]

ルール:

幅と高さの入力を受け取ります

あなたはこれらの両方が数字であると仮定することができます

改行文字を含む文字列を生成する必要があります、\ n

例:

2、2:

[][]
[][]

2、3:

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

最少バイト数が勝ちます。


2
素敵な最初の投稿!PPCGへようこそ!
MD XF

1
数値が正であると仮定できますか?後続の改行を使用できますか?
dzaima

@dzaima正の整数、末尾または先頭のものなし
ロビンレモン

コンソールに印刷できますか、それとも文字列を返す必要がありますか?
ジュゼッペ

5
文字列の末尾の改行を印刷できない場合はどうなりますか?末尾の改行を1つ許可することをお勧めします
Destructible Lemon

回答:


6

SOGL、5 バイト

Ƨ[]*∙

シンプル:

Ƨ[]    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バイト

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

Mathematica Gridオブジェクトは「改行文字を含む文字列」としてカウントされますか?
デビッドチャン


4

パイス-7 5バイト

insert_name_hereのおかげで巧妙なトリックで-2バイト

VE*`Y

ここで試してみてください

説明:

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
`Y代わりに(空のリストの文字列表現)を使用して2バイトを節約できます"[]"
insert_name_here

@insert_name_here Ingenious !! 答えを更新しました。それを指摘してくれてありがとう!
マリア

1
個別にこの正確なコードを見つけました。よくできました。
isaacg

4

C、47 46バイト

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

または

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

私の最初のコードゴルフの試みは、明らかな何かを見逃しましたか?


そこ45のために、このだが、それは最初に改行を持っていますf(w,h){h*=w;while(h--)printf("\n[]"+!(h%w));}
コナー・オブライエン

これは、幅が2の場合にのみ機能します
。– dbandstra

だから、私の間違い
コナーオブライエン

素晴らしい最初のゴルフ!サイトへようこそ!
MD XF

1
forループを使用すると、コードがさらに短くなりませんか?
Spikatrix


3

;#+、197バイト

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

オンラインでお試しください!各入力番号の後にゼロバイトが必要です。

これがどのように機能するかわかりません。あなたに言えることは、コードのこの部分は:

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

入力数値を解析しています。


3

brainfuck、145バイト

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

オンラインでお試しください!

初めてのコードゴルフ!わーい!

入力はascii + 48であるため、50、50を実行するには、b、b(98のASCII文字)を入力する必要があります

説明

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

印象的。サイトへようこそ!:)
DJMcMayhem

入力ASCII + 48なのはなぜですか?あなただけの(おそらくユーザビリティのためのASCII + 48バージョンへのリンク)ASCII + 0の入力を使用してバイトを大幅に節約することができます
CalculatorFeline

入力の基準@calculatorFeline
vityavv

...そうそう。:|
電卓



2

ゼリー、7 バイト

ẋ⁾[]ẋ$Y

文字のリストを返すダイアディックリンク(または結果を出力する完全なプログラム)。

オンラインでお試しください!

どうやって?

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

PowerShell、25バイト

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

-3 Mathiasに感謝します!


あなたはそのように25にそれを短縮することができます:param($w,$h),("[]"*$w)*$h
マティアスR.ジェッセン

2

Japt13 12 + 1 = 14 13バイト

-Rフラグに+1 。

"[]"pN× òU*2

オンラインで試す

  • obarakonのおかげで1バイト節約されました。


@ETHproductions:私が探していた漫画ですが、見つけられないほど酔っていました!
シャギー

ハハ、皆さんが楽しい夜を過ごしていることを願っています。fyiにU*V短縮できます
オリバー

1
@obarakon:昨夜は2つの機会がありNます。絶対に飲まないで、ゴルフ!
シャギー


2

8 7バイト

EN×[]Iη

オンラインでお試しください!リンクは、コードの詳細バージョンです。高さ、幅の順に入力します。Charcoalの描画プリミティブはこれに適していないため、簡単な方法で[]文字列を適切に繰り返します。説明:

 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

さて、このためにプリミティブを描画していますが、それでも8バイトです:P
ASCIIのみ

@ASCIIのみ きちんとした!
ニール

@ASCIIのみああ、事前定義された空の文字列変数の冗長名は何ですか?
ニール


@ ASCII-only次に、ここで何が間違っていますか:オンラインで試してみてください!
ニール


1

ジャプト、7バイト

6バイトのコード、-Rフラグの場合は+1 。

VÆç"[]

のバグのため最新バージョンçでは動作しませんが、コミットf619c52では動作します。オンラインでテストしてください!

説明

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バイト

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

説明:

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

これは、#rows、#colsの順に引数を取ります。出力は改行で始まります。




1

C#、78バイト

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

C#パッドで実行

これはforループよりも短く、より少ないコードで繰り返すことができるC#の関数を認識していません。



1

JavaScript(ES6)、43 36バイト

コメントから、末尾の改行が許可されるようになりました。

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

それを試してみてください

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>



弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.