ASCII 아트 팔각형 #

입력 integer가 주어지면 문자 n > 1로 구성된 측면 길이를 가진 ASCII 아트 팔각형을 출력하십시오 n. 아래 예를 참조하십시오.

n=2
 ##
#  #
#  #
 ##

n=3
  ###
 #   #
#     #
#     #
#     #
 #   #
  ###

n=4
   ####
  #    #
 #      #
#        #
#        #
#        #
#        #
 #      #
  #    #
   ####

n=5
    #####
   #     #
  #       #
 #         #
#           #
#           #
#           #
#           #
#           #
 #         #
  #       #
   #     #
    #####

and so on.

STDOUT에 인쇄하거나 함수 결과로 리턴 할 수 있습니다.

문자가 적절하게 정렬되는 한 외부 공백은 허용됩니다.

규칙 및 I / O

  • 입력 및 출력은 편리한 방법 으로 제공 할 수 있습니다 .
  • #(공백 제외) 대신 인쇄 가능한 ASCII 문자를 사용할 수 있지만 “백그라운드”문자는 공백이어야합니다 (ASCII 32).
  • 전체 프로그램 또는 기능이 허용됩니다.
  • 표준 허점 은 금지되어 있습니다.
  • 이것은 이므로 모든 일반적인 골프 규칙이 적용되며 가장 짧은 코드 (바이트)가 이깁니다.


답변

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=n1w=3n

(x,y)

각 문자에 대해

(h,v)

계산합니다 .

h=w/2|xw/2|v=w/2|yw/2|

팔각형에 속하는 셀은 다음 조건 중 하나를 만족합니다.

  • (
    h=0

    OR

    v=0

    ) AND

    h+vn

    (아래 빨간색)


  • 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

대안 12 바이어 .


답변

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]

온라인으로 사용해보십시오!


답변

파이썬 2 , 81 바이트

a=d=n=input()-1
while a<=n:print' '*a+'#'+' #'[a==n]*(3*n-a+~a)+'#';d-=1;a-=d/n+1

온라인으로 사용해보십시오!


파이썬 2 , 75 바이트

a=d=n=input()-1
while a<=n:print' '*a+`' `'[a==n]*(3*n-a+~a)`;d-=1;a-=d/n+1

온라인으로 사용해보십시오!

믹싱 출력 문자가 정상인 경우.