입력 integer가 주어지면 문자 n > 1
로 구성된 측면 길이를 가진 ASCII 아트 팔각형을 출력하십시오 n
. 아래 예를 참조하십시오.
n=2
##
# #
# #
##
n=3
###
# #
# #
# #
# #
# #
###
n=4
####
# #
# #
# #
# #
# #
# #
# #
# #
####
n=5
#####
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
#####
and so on.
STDOUT에 인쇄하거나 함수 결과로 리턴 할 수 있습니다.
문자가 적절하게 정렬되는 한 외부 공백은 허용됩니다.
규칙 및 I / O
답변
05AB1E , 3 바이트
7ÝΛ
설명
# implicit input as length
# implicit input as string to print
7Ý # range [0...7] as directions
Λ # canvas print
05AB1E 캔버스를 이해하려면 이 답변 을 참조하십시오 .
답변
자바 스크립트 (ES6) 114 106 105 104 103 바이트
n=>(g=x=>v=x*2>w?w-x:x,F=x=>~y?`#
`[~x?(h=g(x--))*g(y)>0&h+v!=n|n>h+v:(y--,x=w,2)]+F(x):'')(y=w=--n*3)
방법?
이것은 문자별로 출력 문자를 빌드합니다.
입력
n주어지면 다음 을 계산합니다.
n′=n−1w=3n′
(x,y)
각 문자에 대해
(h,v)계산합니다 .
h=w/2−|x−w/2|v=w/2−|y−w/2|
팔각형에 속하는 셀은 다음 조건 중 하나를 만족합니다.
- (
h=0 OR v=0 ) AND h+v≥n′ (아래 빨간색)
h+v=n′ (아래 주황색)
예를 들어,
n=4(및
n′=3) 인 경우 :
(0,0)(1,0)(2,0)(3,0)(4,0)(4,0)(3,0)(2,0)(1,0)(0,0)(0,1)(1,1)(2,1)(3,1)(4,1)(4,1)(3,1)(2,1)(1,1)(0,1)(0,2)(1,2)(2,2)(3,2)(4,2)(4,2)(3,2)(2,2)(1,2)(0,2)(0,3)(1,3)(2,3)(3,3)(4,3)(4,3)(3,3)(2,3)(1,3)(0,3)(0,4)(1,4)(2,4)(3,4)(4,4)(4,4)(3,4)(2,4)(1,4)(0,4)(0,4)(1,4)(2,4)(3,4)(4,4)(4,4)(3,4)(2,4)(1,4)(0,4)(0,3)(1,3)(2,3)(3,3)(4,3)(4,3)(3,3)(2,3)(1,3)(0,3)(0,2)(1,2)(2,2)(3,2)(4,2)(4,2)(3,2)(2,2)(1,2)(0,2)(0,1)(1,1)(2,1)(3,1)(4,1)(4,1)(3,1)(2,1)(1,1)(0,1)(0,0)(1,0)(2,0)(3,0)(4,0)(4,0)(3,0)(2,0)(1,0)(0,0)
답변
숯 , 5 바이트
GH*N#
차콜에 대한 첫 번째 답변!
설명:
GH*N# //Full program
GH //Draw a hollow polygon
* //with 8 sides
N //of side length from input
# //using '#' character
답변
캔버스 , 15 14 12 바이트
/⁸⇵╷+×+:⤢n╬┼
설명:
/ a diagonal of length n
⁸ the input,
⇵ ceiling divided by 2, (storing the remainder)
╷ minus one
#× repeat "#" that many times
+ append that to the diagonal
:⤢n overlap that with its transpose
╬┼ quad-palindromize with the overlap being the remainder stored earlier
답변
R , 122 (117) 115 바이트
function(n){n=n-1
m=matrix(0,y<-3*n+1,y)
v=t(h<-(w=3*n/2)-abs(row(m)-1-w))
m[h*v&h+v-n|h+v<n]=' '
write(m,1,y,,"")}
Arnauld의 답변 에서 논리 , 특히 추가 개선 이 필요한 경우이 개정 을 포팅합니다 . Arnauld의 논리 반전에 대한 제안 덕분에 또 다른 2 바이트가 절약되었습니다!
답변
파이썬 2 , 96 바이트
a=b=n=input()
while a>2-n-n:a-=1;b-=a/~-n+1;s=(-~b*' '+'#').ljust(n);print s+s[-1]*(n-2)+s[::-1]