삼각 알파벳 조각


15

입력 된 번호가 부여 n에서 126(또는 0으로 25) 출력 문자 판독은 왼쪽에서 오른쪽으로 위로와 대응하는 문자를 포함 a=1, b=2, c=3, .... 트위스트는 문자가 알파벳에서의 위치에 따라 수직으로 반복되어야한다는 것입니다. 홀수 ( 1인덱싱 된 경우)는 수평선을 가로 질러 균형을 유지해야하며 짝수는 상단 또는 하단을 선호하는 사이에서 번갈아 가야합니다 (먼저 어느 방향으로 갈 것인지 선택할 수 있음). 0 인덱싱 인 경우 이전 문장에서 홀수 / 짝수를 교체하십시오.

다른 방식으로 표현 된 - 편지의 경우 알파벳 값 ?이며 #, 다음이 있어야 #출력에서 해당 문자의 복사에 모두 #열째. 이 문자는가있는 수평선 위와 아래에 고르게 균형을 이루어야합니다 a. 글자의 균형이 맞지 않으면 해당 줄 위와 아래에 "추가"글자가 번갈아 표시됩니다.

다음은 n = 1,2,3,4,5,6개행으로 구분 된 처음 6 개의 출력 ( , 1- 색인, 맨 아래로 대체하도록 선택)이므로 패턴을 볼 수 있습니다. 패턴을 설명하는 주석은로 시작합니다 #.

a         # On a line by itself

ab
 b        # The "extra" letter is below the horizontal

  c
abc       # The 'c' splits evenly
 bc

   d      # Because the 'b' was below, the extra 'd' must be above
  cd
abcd
 bcd


   de
  cde
abcde     # The 'e' balances
 bcde
    e

   def
  cdef
abcdef
 bcdef
    ef
     f    # Since the 'd' was above, the extra 'f' must be below

(일부 건너 뛰기 n=26)

                       xyz
                      wxyz
                   tuvwxyz
                  stuvwxyz
               pqrstuvwxyz
              opqrstuvwxyz
           lmnopqrstuvwxyz
          klmnopqrstuvwxyz
       hijklmnopqrstuvwxyz
      ghijklmnopqrstuvwxyz
   defghijklmnopqrstuvwxyz
  cdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
 bcdefghijklmnopqrstuvwxyz
    efghijklmnopqrstuvwxyz
     fghijklmnopqrstuvwxyz
        ijklmnopqrstuvwxyz
         jklmnopqrstuvwxyz
            mnopqrstuvwxyz
             nopqrstuvwxyz
                qrstuvwxyz
                 rstuvwxyz
                    uvwxyz
                     vwxyz
                        yz
                         z

규칙

  • 대문자 또는 소문자로 출력하도록 선택할 수 있지만 일관성이 있어야합니다.
  • 선택적인 후행 줄 바꿈을 제외하고 출력에는 불필요한 공백이 없어야합니다.
  • 전체 프로그램 또는 기능이 허용됩니다.
  • 입력 번호는 적절한 형식을 통해 얻을 수 있습니다 .
  • 표준 허점 은 금지되어 있습니다.
  • 이것은 이므로 모든 일반적인 골프 규칙이 적용되며 가장 짧은 코드 (바이트)가 이깁니다.

답변:



8

파이썬 2, 101 99 바이트

r=range(input())
for x in sorted(r,key=lambda x:x*-(x&2)):print bytearray([97+i,32][i<x]for i in r)

xsot는 x*-(x&2)충분 한 정렬 키 를 실현하여 2 바이트를 절약 했습니다. 결과 이미지의 아래쪽 절반은 sorted안정적인 정렬 을 보장하므로 영향을받지 않습니다 .


a -를 삭제 하여 줄을 역순으로 출력 할 수 없습니까 ?
Neil

나는 효과가 있다고 생각 x*-(x&2)합니다.
xsot



2

자바 스크립트 (ES6), 127 126 바이트

n=>[...Array(n).keys()].sort((a,b)=>a*~-(a&2)-b*~-(b&2)).map(i=>` `.repeat(i)+`abcdefghijklmnopqrstuvwxyz`.slice(i,n)).join`\n`

@Lynn의 정렬 트릭을 사용합니다. 전체 알파벳을 쓰는 것은 그것을 계산하는 것보다 2 바이트 저렴했습니다. 편집 : \n실제로 리터럴 줄 바꿈 문자를 나타내는 것을 잊어 버렸기 때문에 @ETHproductions 덕분에 1 바이트가 절약되었습니다 . (줄이 너무 길면 대답에 문자 줄 바꿈을 넣는 것을 좋아하지 않습니다.)


알파벳에 2 바이트를 저장하십시오. btoa`...` 여기서는 ...결과로 대체됩니다 atob`abcdefghijklmnopqrstuvwxyzz` . (또한 \n리터럴 개행 문자로 바꿀 수 있습니다 .)
ETHproductions

@ETHproductions UTF 대신 ISO 인코딩을 사용한다고 생각합니까?
Neil

그렇습니다. JS에서 UTF-8 대신 ISO-8859-1을 사용할 수 있습니까?
ETHproductions

@ETHproductions 아마도 작동하지만 작동하지 않는 것 같으므로 표시하지 않습니다.
Neil
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.