올림픽 게임을 주최하고 행사를 위해 환상적인 수영장을 만들어야하지만 감독관은 종종 차원과 관련하여 마음을 바꾸고 요청한 크기로 빨리 재구성 할 수있는 방법이 필요합니다!
두 정수를 감안할 때, L
그리고 x
, 당신의 작업은 길이의 수영장을 구축하는 것입니다 L
및 x
차선을.
수영장은 어떻게 지립됩니까?
-
여기에는 수평 사각형이
L
연속 대시 (-
)로 만들어지고 세로 벽이3x - 1
막대 (|
) 로 만들어지는 내부 정사각형이 포함 됩니다. 또한+
각 모서리에 4 개의 표시가 있습니다. 예를 들어 보자 (L = 10, x = 2
) :+ ---------- + | | | | | | | | | | + ---------- +
-
각 레인 의 너비는 세로 단위 2입니다. 내부 정사각형은 가로로 연속 된 기호
x-1
로 구성된 레인 구분 기호로 채워져 있습니다. 레인 분리기를 놓은 후 수영장은 다음과 같아야합니다.L
:
+ ---------- + | | | | | :::::::::: | | | | | + ---------- +
-
풀에는 안쪽
-
벽|
을 둘러싸는 가로 벽이 (L + 4) 이고 세로 벽이 (3x + 1) 인 패딩 (외부 정사각형) 이 포함됩니다 .+ -------------- + | + ---------- + | | | | | | | | | | | :::::::::: | | | | | | | | | | | + ---------- + | + -------------- +
그리고 이것이 올림픽 크기의 수영장입니다!
명세서:
-
디자인 및 기능 목적을 위해
100 ≥ L ≥ 10
그리고15 ≥ x ≥ 2
. -
출력은 표시된 그대로 여야합니다. “수직으로 구축 된”풀 출력이 허용되지 않습니다.
-
후행 및 선행 공간이 허용됩니다.
-
표준 방법으로 입력하고 출력 할 수 있습니다 .
-
기본 허점이 적용됩니다.
예 / 테스트 사례 :
L = 20, x = 3 + ------------------------ + | + -------------------- + | | | | | | | | | | | :::::::::::::::::::: | | | | | | | | | | | | :::::::::::::::::::: | | | | | | | | | | | + -------------------- + | + ------------------------ + L = 50, x = 5 : + ------------------------------------------------- ----- + | + ------------------------------------------------- -+ | | | | | | | | | | | :::::::::::::::::::::::::::::::::::::::::::::::::::::::: : | | | | | | | | | | | | :::::::::::::::::::::::::::::::::::::::::::::::::::::::: : | | | | | | | | | | | | :::::::::::::::::::::::::::::::::::::::::::::::::::::::: : | | | | | | | | | | | | :::::::::::::::::::::::::::::::::::::::::::::::::::::::: : | | | | | | | | | | | + ------------------------------------------------- -+ | + ------------------------------------------------- ----- + L = 10, x = 15 + -------------- + | + ---------- + | | | | | | | | | | | :::::::::: | | | | | | | | | | | | :::::::::: | | | | | | | | | | | | :::::::::: | | | | | | | | | | | | :::::::::: | | | | | | | | | | | | :::::::::: | | | | | | | | | | | | :::::::::: | | | | | | | | | | | | :::::::::: | | | | | | | | | | | | :::::::::: | | | | | | | | | | | | :::::::::: | | | | | | | | | | | | :::::::::: | | | | | | | | | | | | :::::::::: | | | | | | | | | | | | :::::::::: | | | | | | | | | | | | :::::::::: | | | | | | | | | | | | :::::::::: | | | | | | | | | | | + ---------- + | + -------------- +
이것은 code-golf 이므로 바이트 단위 의 가장 짧은 코드 가 이깁니다!
* 수직으로 설치하면 물이 흘러 나올 수 있습니다. : P
** 예, 레인이 많을수록 수영장이 짧을수록 수영장처럼 보이는 그림이 줄어 듭니다!
답변
숯 , 32 바이트
NθNη↓Eθ×η: B⁺θ²⁺׳η¹↖←B⁺θ⁶⁺׳η³
Neil 덕분에 -4 .
AST :
Program
├N: Input Number
│└θ: Identifier θ
├N: Input Number
│└η: Identifier η
├Print
│├↓: Down
│└E: Map
│ ├θ: Identifier θ
│ └×: Product
│ ├η: Identifier η
│ └': ': String ': '
├B: Box
│├⁺: Sum
││├θ: Identifier θ
││└2: Number 2
│└⁺: Sum
│ ├×: Product
│ │├3: Number 3
│ │└η: Identifier η
│ └1: Number 1
├Move
│└↖: Up Left
├Move
│└←: Left
└B: Box
├⁺: Sum
│├θ: Identifier θ
│└6: Number 6
└⁺: Sum
├×: Product
│├3: Number 3
│└η: Identifier η
└3: Number 3
답변
숯 , 40 39 37 바이트
NθNηB⁺θ⁶⁺׳η³↘→B⁺θ²⁺׳η¹→F⁻η¹«M³↓P×:θ
나는 Neil이 이미 같은 길이의 숯 답변을 가지고 있다는 것을 알고 있지만, 약간 다른 접근법을 취하여 내 게시물을 게시 할 수도 있다고 생각했습니다.
설명
NθNηB⁺θ⁶⁺׳η³↘→B⁺θ²⁺׳η¹→F⁻η¹«M³↓P×:θ
NθNη take the two inputs as numbers in θ and η
B⁺θ⁶⁺×³η³ draw a rectangle θ + 6 by 3η + 3
(characters default to |, - and +)
↘→ move the cursor down one and right two
B⁺θ²⁺×³η¹ draw a rectangle θ + 2 by 3η + 1
F⁻η¹« for ι (unused) from 0 up until η - 1:
M³↓ move the cursor down by 3
P×:θ print θ :s without moving the cursor
[implicit end of for]
답변
숯, 40 38 36 31 바이트
A⁺²NθA⁺¹×³NηUOθη:¶¶Bθη↖←B⁺⁴θ⁺²η
온라인으로 사용해보십시오! 링크는 자세한 버전의 코드입니다. 설명:
A⁺²Nθ Assign(Plus(2, InputNumber()), q);
Charcoal의 도면 프리미티브는 +
s를 포함한 전체 문자 수를 사용 하지만 입력은 -
s 의 수에 불과 하므로 내벽의 너비를 얻으려면 2를 더해야합니다.
A⁺¹×³Nη Assign(Plus(1, Times(3, InputNumber())), h);
맨 아래 줄을 포함하여 내벽의 높이를 다시 계산하십시오.
UOθη:¶¶ Oblong(q, h, ":\n\n");
차선을 그립니다. 이것은 단순히 :
두 개의 빈 줄로 세로로 구분 된 s로 채워진 사각형입니다 (필로우는 개행 문자를 나타냄).
Bθη Box(q, h);
Rectangle
명령은 정확히 우리가 내벽을 그릴 필요하다. 편집 : Box
세 번째 매개 변수를 생략하고 2 바이트를 절약 할 수 있습니다.
↖ Move(:UpLeft);
← Move(:Left);
B⁺⁴θ⁺²η Box(Plus(4, q), Plus(2, h));
그리고 더 넓고 키가 큰 것을 제외하고 외벽을 중심으로 외벽을 그립니다.
답변
T-SQL, 284 281 바이트
DECLARE @ INT,@x INT,@S VARCHAR(MAX)='+--d--+b| +d+ |b'SELECT @=L,@x=x FROM t
P:SET @S+='| |s| |b| |s| |b| |c| |b'SET @x-=1IF @x>0GOTO P
PRINT REPLACE(REPLACE(REPLACE(REPLACE(LEFT(@S,LEN(@S)-6)+'+d+ |b+--d--+','d',REPLICATE('-',@)),'b',CHAR(13)),'s',SPACE(@)),'c',REPLICATE(':',@))
입력 INT의 열에서 가져 L 및 X 기존 테이블에서 t , 우리의 허용 입력 방법에 따라 .
기본적으로 반복되는 문자 (d = 대시, s = 공백, c = 콜론, b = 줄 바꿈)를 나타내는 문자로 긴 문자열을 만든 다음 끝에 적절한 필러로 모두 바꿉니다.
형식화 :
DECLARE @ INT,@x INT,@S VARCHAR(MAX)='+--d--+b| +d+ |b'
SELECT @=L,@x=x FROM t
P:
SET @S+='| |s| |b| |s| |b| |c| |b'
SET @x-=1
IF @x>0 GOTO P
PRINT REPLACE(REPLACE(REPLACE(REPLACE( LEFT(@S,LEN(@S)-6)+'+d+ |b+--d--+'
,'d',REPLICATE('-',@))
,'b',CHAR(13))
,'s',SPACE(@))
,'c',REPLICATE(':',@))
루프 내에서 2 행의 공백과 1 행의 콜론을 추가 한 다음 마지막에 해당 분배기 행을 잘라 내고 풀 테두리를 추가하여 교체를 수행합니다.
편집 : @
가장 자주 사용되는 변수 로 전환 하고 초기화 순서를 바꾸어 3 바이트를 절약했습니다 .
답변
자바 스크립트 (ES6) 137 124 바이트
내 휴대 전화에서 조금 아래로 골프를 쳤다.
x=>y=>`+--0--+
| +0+ |
${((a=`| |1| |
`)+a+`| |2| |
`).repeat(y-1)+a+a}| +0+ |
+--0--+`.replace(/\d/g,n=>"- :"[n].repeat(x))
시도 해봐
f=
x=>y=>`+--0--+
| +0+ |
${((a=`| |1| |
`)+a+`| |2| |
`).repeat(y-1)+a+a}| +0+ |
+--0--+`.replace(/\d/g,n=>"- :"[n].repeat(x))
oninput=_=>o.innerText=f(+i.value)(+j.value);o.innerText=f(i.value=50)(j.value=5)
input{font-family:sans-serif;margin:0 5px 0 0;width:50px;}
<label for=i>L: </label><input id=i type=number><label for=j>x: </label><input id=j type=number><pre id=o>
답변
파이썬 (2) , 124 (120) 117 바이트
Hyper Neutrino 덕분에 -2 바이트
l,x=input()
o='+--%s--+\n| +%s+ |\n'%(('-'*l,)*2)
print o+'| |%s| |\n'*(x*3-1)%((' '*l,' '*l,':'*l)*x)[:-1]+o[-2::-1]
답변
SOGL V0.12 , 52 51 바이트
:┌* +1Ο;@*┐1ΟG∙⁴++⁰
b3*Ie4+⁰b3*He⁰32žbH∫3*2+4;e :*ž
여기 사용해보십시오!
이것의 20 바이트는 사각형 함수이며, 숯에는 내장되어 있습니다.
설명:
Rectangle function: (example: on stack 4, 2)
: duplicate the top of stack (X pos) [4, 2, 2]
┌* get that many "-"es [4, 2, "--"]
+ push "+" [4, 2, "--", "+"]
1Ο wrap the dashes in pluses [4, 2, "+--+"]
; get the duplicated X position [4, "+--+", 2]
@* get that many spaces [4, "+--+", " "]
┐ push "|" [4, "+--+", " ", "|"]
1Ο wrap the spaces with "|" [4, "+--+", "| |"]
G get the Y value ontop ["+--+", "| |", 4]
∙ get an array with that many strings ["+--+", ["| |", "| |", "| |", "| |"]]
⁴ duplicate the dashes wrapped in pluses ["+--+", ["| |", "| |", "| |", "| |"], "+--+"]
++ add everything to one array [["+--+", "| |", "| |", "| |", "| |", "+--+"]]
Main function: (example input: 2, 5)
b3* push variable B (input 1, Y length) multiplied by 3 [6]
I increase it [7]
e4+ push variable E (input 2, X length) + 4 [7, 9]
⁰ execute the rectangle function [in X: E+4, Y: b*3+1] [["+---------+","| |","| |","| |","| |","| |","| |","| |","+---------+"]]
b3* push variable B * 3 [["+---------+",..,"+---------+"], 6]
H decrease it [["+---------+",..,"+---------+"], 5]
e push variable E [["+---------+",..,"+---------+"], 5, 5]
⁰ execute the rectangle function [on X: E, Y: B*3-1] [["+---------+",..,"+---------+"], ["+-----+","| |","| |","| |","| |","| |","+-----+"]]
32ž at coordinates [3;2] (1-indexed) in the first rectangle put in the 2nd [["+---------+",
"| +-----+ |",
"| | | |",
"| | | |",
"| | | |",
"| | | |",
"| | | |",
"| +-----+ |",
"+---------+"]
bH∫ iterate over the numbers from 1 to B-1: [[...], 1]
3*2+ push pop()*3+2 [[...], 5]
4; push 4 one below the stack [[...], 4, 5]
e push the variable E (X length) [[...], 4, 5, 5]
:* get that many colons [[...], 4, 5, ":::::"]
ž insert [at coordinates [4; cIter*3+2] the colons]