에펠 탑 : “A”에서 큰 “A”만들기 n짝 수면 출력용 모노 스페이스 글꼴을

라인의 번호를 부여하는 함수를 작성 n하는합니다 bigA.

  • 가로 막대 bigA는 가운데 줄에 있어야하며, n짝 수면
  • 출력용 모노 스페이스 글꼴을 가정

출력은 줄 바꿈을 위해 명확한 줄 바꿈이 있고 왼쪽 패딩에 올바른 공백이있는 문자열 (또는 유사한 문자 배열)이어야합니다 (\ t는 4 공백으로 가정 할 수 있음). 오른쪽에 공백이있을 수 있습니다.

n = 1

A

n = 2

 A
AAA

n = 3

  A
 AAA
A   A

n = 4

   A
  A A
 AAAAA
A     A

n = 5

    A
   A A
  AAAAA
 A     A
A       A

이것은 더 작은 “H”에서 “H”를 생성함으로써 영감을 얻었습니다.



답변

05AB1E , 13 바이트

암호:

Ð;î¹)'A1376SΛ

05AB1E 인코딩을 사용합니다 . 온라인으로 사용해보십시오!

설명:

Ð                  # Triplicate the input.
 ;î                # Compute ceiling(n / 2).
   ¹               # Push the first input again.
    )              # Wrap into an array. For input 7, this would result in:
                     [7, 7, 4, 7].
     'A            # Push the character 'A'
       1376S       # Push the array [1, 3, 7, 6]. These are the directions of the canvas.
                     This essentially translates to [↗, ↘, ↖, ←].
            Λ      # Write to canvas using the previous three parameters.

캔버스

아마도 캔버스를 조금 더 (그리고 다른 많은 기능들) 문서화해야하지만, 기본적으로 요약합니다. 캔버스는 주어진 매개 변수 유형에 따라 다른 ‘모드’를 갖습니다. 캔버스 명령에는 <length> <string> <direction>의 세 가지 매개 변수가 있습니다.

길이 및 방향 매개 변수는리스트이므로, 이들리스트를 압축하여 실행할 명령 세트를 작성합니다. 문자열 매개 변수는 문자 A 이므로 모든 명령에서 사용되는 채우기 문자입니다. 캔버스는 이것을 다음 명령어 세트 (입력 7)로 해석합니다.

  • 문자열 A 방향으로 길이 7 의 선을 그 립니다.
  • A 를 direction 방향으로 길이 7 의 선을 그 립니다.
  • A 를 direction 방향으로 길이 4 의 선을 그 립니다.
  • 문자열 A 방향으로 길이 7 의 선을 그 립니다.

지시 사항은 다음과 같은 방식으로 번역됩니다.

7   0   1
  ↖ ↑ ↗
6 ← X → 2
  ↙ ↓ ↘
5   4   3

아무것도 출력되지 않으면 05AB1E는 자동으로 캔버스 결과를 출력합니다.


답변

, 17 15 바이트

NθP×θAM⊘θ↗P^×θA

온라인으로 사용해보십시오! 링크는 자세한 버전의 코드입니다. 설명:

Nθ

입력 n.

P×θA

큰 가로 막대를 인쇄합니다 A. (짝수의 경우 n+1어쨌든 오른쪽이 겹칩니다.)

M⊘θ↗

큰 상단으로 이동하십시오 A.

P^×θA

큰 양면을 인쇄합니다 A.


답변

파이썬 2 , 80 바이트

lambda n:'\n'.join(' '*(n+~i)+('A'+' A'[i==n/2]*n*2)[:i*2]+'A'for i in range(n))

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

원하는 출력을 왼쪽 공백, 왼쪽 A+ 중간 공백 또는 As 및 오른쪽 으로 나눕니다 A. 고정 문자열에서 슬라이싱을 사용하여 중간 부분을 계산하십시오. 이것은 같은 방식으로 첫 번째 줄을 생성 할 수있게합니다.


답변

Stax , 15 바이트

┴3╬*ôP^x'┌_╓J²♫

실행 및 디버깅

압축 해제, 압축 해제 및 주석 처리 된 프로그램은 다음과 같습니다.

m       map over [1 .. input] using rest of the program, output each result
'A      "A" literal
xhi=    is the iteration index equal to (integer) half the input?
65*     multiply by 65 (character code of "A")
]i*     repeat that character (" " or  "A") i times
+       concat to initial "A"
x)      left pad to the original input
|p      palindromize (concatenate the reverse minus the last character)

이것을 실행


답변

자바 스크립트 (ES6), 77 바이트

이 소스 코드는 사각형 모양입니다 ! 아 잠깐만 … 잘못된 도전 :-/

f=(n,k=n>>1,p='A')=>--n?f(n,k,' '+p)+`
${p}${(k-n?' ':'A').repeat(n*2-1)}A`:p

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


답변

파이썬 3.6 , 79 바이트 또는 73 바이트

문자의 가로 부분을 정렬하기 위해 f- 문자열 사용 :

lambda n:'\n'.join(f"{'A'+' A'[i==n//2]*2*i:>{n+i}}"[:-1]+'A'for i in range(n))

\b하나를 삭제하는 데 사용 A(아마도 부정 행위) :

lambda n:'\n'.join(f"{'A'+' A'[i==n//2]*2*i:>{n+i}}\bA"for i in range(n))


답변

자바 (JDK 10) , 124 바이트

n->{var a=new char[n][n+n-1];for(int c=n,r;c-->0;)for(r=n;r-->0;)a[r][n+n-c-2]=a[r][c]+=r==n/2&c>=r|r==n+~c?65:32;return a;}

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