チャレンジ:
ASCIIボックスの長方形を描きます:[]
ルール:
幅と高さの入力を受け取ります
あなたはこれらの両方が数字であると仮定することができます
改行文字を含む文字列を生成する必要があります、\ n
例:
2、2:
[][]
[][]
2、3:
[][]
[][]
[][]
最少バイト数が勝ちます。
チャレンジ:
ASCIIボックスの長方形を描きます:[]
ルール:
幅と高さの入力を受け取ります
あなたはこれらの両方が数字であると仮定することができます
改行文字を含む文字列を生成する必要があります、\ n
例:
2、2:
[][]
[][]
2、3:
[][]
[][]
[][]
最少バイト数が勝ちます。
回答:
v&DiiX"
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
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
`Y
代わりに(空のリストの文字列表現)を使用して2バイトを節約できます"[]"
。
f(w,h){for(h*=w;h--;)printf(h%w?"[]":"[]\n");}
または
f(w,h){for(h*=w;h--;)printf("[]%c",h%w?0:10);}
私の最初のコードゴルフの試みは、明らかな何かを見逃しましたか?
f(w,h){h*=w;while(h--)printf("\n[]"+!(h%w));}
for
ループを使用すると、コードがさらに短くなりませんか?
F„[]×,
説明
入力は height, width
F # height times do
„[] # push "[]"
× # repeat width times
, # print with newline
>;;;;;;~++++++++:>~;;;;:>~*(-:~<~+-::>-:::<~<-+++++++++~:::<~+-:::>-::*)-::<-::::>-::(;)::>-::*(-:~<~+-::>-:::<~<-+++++++++~:::<~+-:::>-::*)-:<~<;;;;;-+>-:<-:-(-:::~<-:::(~<#<-;;-#~;)-:<#-::<;>-:-)
オンラインでお試しください!各入力番号の後にゼロバイトが必要です。
これがどのように機能するかわかりません。あなたに言えることは、コードのこの部分は:
*(-:~<~+-::>-:::<~<-+++++++++~:::<~+-:::>-::*)-::<-::::>-::(;)::>-::*(-:~<~+-::>-:::<~<-+++++++++~:::<~+-:::>-::*)
入力数値を解析しています。
+++++++++[>++++++++++<-]>+[>+>+<<-]>>++>,>+++++++++[<----->-]<--->>>,>+++++++++[<----->-]<--->++++++++++<[<<<[>+>+<<-]>[<<<.>.>>-]>[<<+>>-]>>.<-]
初めてのコードゴルフ!わーい!
入力は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
<-]
'[]'$~],+:@[
'[]'$~],+:@[ 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
これにより、繰り返し文字のx
by 2y
文字列が得られます[]
。
ẋ⁾[]ẋ$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
Ài[]<esc>ÀÄ
どこ<esc>
ですか0x1b
。
Ài[]<esc> " arg1 times insert []
ÀÄ " arg2 times duplicate this line
M"[]"َJ,
M"[]"َJ,
M //Executes code input1 times
"[]" //Pushes []
َ //Duplicates [] input2 times
J //Joins the stack
, //Prints with a trailing newline
param($w,$h),("[]"*$w)*$h
-3 Mathiasに感謝します!
param($w,$h),("[]"*$w)*$h
U*V
短縮できますN×
N
ます。絶対に飲まないで、ゴルフ!
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
p=paste
function(w,h)p(rep(p(rep('[]',w),collapse=''),h),collapse='
')
文字列を構築して返す匿名関数を返します。
function(w,h)write(matrix('[]',w,h),'',w,,'')
目的の形式で文字列を出力する匿名関数。
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
seq $(($1*$2))|sed s/.*/[]/|tr -d "
"|fold -w $(($1*2))
オンラインでお試しください!Windowsを実行しているため、bashのTIOフレーバーを使用します。
l~"[]"*N+*
コメントから、末尾の改行が許可されるようになりました。
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>