도전 과제 :
ASCII 상자의 사각형을 그립니다 : []
규칙:
너비와 높이 입력을받습니다
둘 다 숫자라고 가정 할 수 있습니다
줄 바꿈 문자가 포함 된 문자열을 생성해야합니다. \ n
예 :
2, 2 :
[][]
[][]
2, 3 :
[][]
[][]
[][]
페 웨스트 바이트가 이깁니다.
도전 과제 :
ASCII 상자의 사각형을 그립니다 : []
규칙:
너비와 높이 입력을받습니다
둘 다 숫자라고 가정 할 수 있습니다
줄 바꿈 문자가 포함 된 문자열을 생성해야합니다. \ n
예 :
2, 2 :
[][]
[][]
2, 3 :
[][]
[][]
[][]
페 웨스트 바이트가 이깁니다.
답변:
Grid@Table["[]",{#2},{#}]&
Grid
객체는 "개행 문자가있는 문자열"로 계산됩니까?
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
>;;;;;;~++++++++:>~;;;;:>~*(-:~<~+-::>-:::<~<-+++++++++~:::<~+-:::>-::*)-::<-::::>-::(;)::>-::*(-:~<~+-::>-:::<~<-+++++++++~:::<~+-:::>-::*)-:<~<;;;;;-+>-:<-:-(-:::~<-:::(~<#<-;;-#~;)-:<#-::<;>-:-)
온라인으로 사용해보십시오! 각 입력 번호 뒤에 0 바이트가 필요합니다.
나는 이것이 어떻게 작동하는지 모른다. 내가 말할 수있는 것은 코드 의이 부분입니다.
*(-:~<~+-::>-:::<~<-+++++++++~:::<~+-:::>-::*)-::<-::::>-::(;)::>-::*(-:~<~+-::>-:::<~<-+++++++++~:::<~+-:::>-::*)
입력 번호를 구문 분석하고 있습니다.
+++++++++[>++++++++++<-]>+[>+>+<<-]>>++>,>+++++++++[<----->-]<--->>>,>+++++++++[<----->-]<--->++++++++++<[<<<[>+>+<<-]>[<<<.>.>>-]>[<<+>>-]>>.<-]
내 첫 코드 골프! 예이!
입력은 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
<-]
ẋ⁾[]ẋ$Y
문자 목록을 리턴하는 2 진 링크 (또는 결과를 인쇄하는 전체 프로그램).
ẋ⁾[]ẋ$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
Mathias 덕분에 -3!
param($w,$h),("[]"*$w)*$h
U*V
단축 될 수 있습니다N×
N
지난 밤 에 작업 할 수있는 두 가지 기회 입니다. 술을 마시지 마십시오.
'[]'⍴⍨⊢,2×⊣
'[]'
문자열
⍴⍨
모양을 채우기 위해 주기적으로 반복
⊢
올바른 논증 (행)
,
과
2×
두번
⊣
왼쪽 인수 (열)
EN×[]Iη
온라인으로 사용해보십시오! 링크는 자세한 버전의 코드입니다. 순서의 높이, 너비로 입력을받습니다. 숯의 드로잉 프리미티브는 이것에 적합하지 않으므로 쉽게 빠져 나갈 수 있고 []
문자열을 적절하게 반복합니다 . 설명:
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Æç"[]
의 버그로 인해 최신 버전 ç
에서는 작동하지 않지만 commitf619c52
에서 작동 합니다. 온라인으로 테스트하십시오!
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
import."strings"
func(x,y int)string{return Repeat(Repeat("[]",x)+"\n",y)}
[:|?[:|?@[]`';
설명:
[:| 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의 순서로 인수를 취합니다. 출력은 개행으로 시작합니다.
seq $(($1*$2))|sed s/.*/[]/|tr -d "
"|fold -w $(($1*2))
온라인으로 사용해보십시오! 창을 실행하기 때문에 bash의 TIO 풍미를 사용합니다.
(w,h)=>"".PadLeft(h).Replace(" ","".PadLeft(w).Replace(" ","[]")+'\n').Trim();
이것은 for-loops보다 짧으며 더 적은 코드로 반복 할 수있는 C #의 기능을 알지 못합니다.
주석에서 후행 줄 바꿈이 허용됩니다.
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>