알파벳 피라미드 만들기


19

오늘 우리는 글자로 피라미드를 만들 것입니다! 다음은 처음 5 글자에 대한 문자 피라미드의 예입니다.

  1. 첫 오름차순과 내림차순 사이의 공백으로 처음 5자를 쓰십시오.

    A B C D E D C B A
    
  2. 위 줄의 처음 네 글자에 대해 동일한 작업을 수행하지만 두 개의 추가 공백이 있습니다.

      A B C D C B A
    A B C D E D C B A
    
  3. 마지막 줄이 'A'가 될 때까지 동일한 단계를 반복하십시오.

            A 
          A B A
        A B C B A
      A B C D C B A
    A B C D E D C B A
    
  4. 올라가는 대신 내려가는 2 단계와 3 단계를 반복하십시오.

            A 
          A B A
        A B C B A
      A B C D C B A
    A B C D E D C B A
      A B C D C B A
        A B C B A
          A B A
            A 
    

동일한 패턴을 최대 26 자까지 확장 할 수 있습니다. 문제는 정수를 입력으로 받아 해당 문자 피라미드를 생성하는 프로그램이나 함수를 작성하는 것입니다. 대문자 또는 소문자를 사용하도록 선택할 수 있습니다. 입력은의 정수로 가정 [1, 26]하고 출력은 2d 문자열에 적합한 형식 일 수 있습니다. 예를 들어, 줄 바꿈이 포함 된 문자열, 문자 배열, 파일로 인쇄 등이 있습니다. 각 줄에는 그 뒤에 공백이있을 수 있으며 선택적으로 하나의 마지막 줄 바꿈을 출력 할 수 있습니다.

다음은 입력 / 출력의 예입니다.

1:

A

2:

  A
A B A
  A

3:

    A
  A B A
A B C B A
  A B A
    A

5:
        A 
      A B A
    A B C B A
  A B C D C B A
A B C D E D C B A
  A B C D C B A
    A B C B A
      A B A
        A 

13:


                        A
                      A B A
                    A B C B A
                  A B C D C B A
                A B C D E D C B A
              A B C D E F E D C B A
            A B C D E F G F E D C B A
          A B C D E F G H G F E D C B A
        A B C D E F G H I H G F E D C B A
      A B C D E F G H I J I H G F E D C B A
    A B C D E F G H I J K J I H G F E D C B A
  A B C D E F G H I J K L K J I H G F E D C B A
A B C D E F G H I J K L M L K J I H G F E D C B A
  A B C D E F G H I J K L K J I H G F E D C B A
    A B C D E F G H I J K J I H G F E D C B A
      A B C D E F G H I J I H G F E D C B A
        A B C D E F G H I H G F E D C B A
          A B C D E F G H G F E D C B A
            A B C D E F G F E D C B A
              A B C D E F E D C B A
                A B C D E D C B A
                  A B C D C B A
                    A B C B A
                      A B A
                        A


26:

                                                  A
                                                A B A
                                              A B C B A
                                            A B C D C B A
                                          A B C D E D C B A
                                        A B C D E F E D C B A
                                      A B C D E F G F E D C B A
                                    A B C D E F G H G F E D C B A
                                  A B C D E F G H I H G F E D C B A
                                A B C D E F G H I J I H G F E D C B A
                              A B C D E F G H I J K J I H G F E D C B A
                            A B C D E F G H I J K L K J I H G F E D C B A
                          A B C D E F G H I J K L M L K J I H G F E D C B A
                        A B C D E F G H I J K L M N M L K J I H G F E D C B A
                      A B C D E F G H I J K L M N O N M L K J I H G F E D C B A
                    A B C D E F G H I J K L M N O P O N M L K J I H G F E D C B A
                  A B C D E F G H I J K L M N O P Q P O N M L K J I H G F E D C B A
                A B C D E F G H I J K L M N O P Q R Q P O N M L K J I H G F E D C B A
              A B C D E F G H I J K L M N O P Q R S R Q P O N M L K J I H G F E D C B A
            A B C D E F G H I J K L M N O P Q R S T S R Q P O N M L K J I H G F E D C B A
          A B C D E F G H I J K L M N O P Q R S T U T S R Q P O N M L K J I H G F E D C B A
        A B C D E F G H I J K L M N O P Q R S T U V U T S R Q P O N M L K J I H G F E D C B A
      A B C D E F G H I J K L M N O P Q R S T U V W V U T S R Q P O N M L K J I H G F E D C B A
    A B C D E F G H I J K L M N O P Q R S T U V W X W V U T S R Q P O N M L K J I H G F E D C B A
  A B C D E F G H I J K L M N O P Q R S T U V W X Y X W V U T S R Q P O N M L K J I H G F E D C B A
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z Y X W V U T S R Q P O N M L K J I H G F E D C B A
  A B C D E F G H I J K L M N O P Q R S T U V W X Y X W V U T S R Q P O N M L K J I H G F E D C B A
    A B C D E F G H I J K L M N O P Q R S T U V W X W V U T S R Q P O N M L K J I H G F E D C B A
      A B C D E F G H I J K L M N O P Q R S T U V W V U T S R Q P O N M L K J I H G F E D C B A
        A B C D E F G H I J K L M N O P Q R S T U V U T S R Q P O N M L K J I H G F E D C B A
          A B C D E F G H I J K L M N O P Q R S T U T S R Q P O N M L K J I H G F E D C B A
            A B C D E F G H I J K L M N O P Q R S T S R Q P O N M L K J I H G F E D C B A
              A B C D E F G H I J K L M N O P Q R S R Q P O N M L K J I H G F E D C B A
                A B C D E F G H I J K L M N O P Q R Q P O N M L K J I H G F E D C B A
                  A B C D E F G H I J K L M N O P Q P O N M L K J I H G F E D C B A
                    A B C D E F G H I J K L M N O P O N M L K J I H G F E D C B A
                      A B C D E F G H I J K L M N O N M L K J I H G F E D C B A
                        A B C D E F G H I J K L M N M L K J I H G F E D C B A
                          A B C D E F G H I J K L M L K J I H G F E D C B A
                            A B C D E F G H I J K L K J I H G F E D C B A
                              A B C D E F G H I J K J I H G F E D C B A
                                A B C D E F G H I J I H G F E D C B A
                                  A B C D E F G H I H G F E D C B A
                                    A B C D E F G H G F E D C B A
                                      A B C D E F G F E D C B A
                                        A B C D E F E D C B A
                                          A B C D E D C B A
                                            A B C D C B A
                                              A B C B A
                                                A B A
                                                  A

항상 그렇듯이 이것은 이므로 표준 허점이 적용되고 바이트 단위의 최단 답변이 승리합니다!


3
관련 -약간 다른 문자, 공백 및 입력이없는 동일한 문제
— Sp3000

1
@ stewiegriffin 아니오, 공간은 어느 쪽이든 있어야합니다.
— DJMcMayhem

4
이 페이지를 스크롤하면 26 개의 출력물에 깔끔한 착시 현상이 나타납니다.
— cobaltduck

답변:


7

파이썬, 184 174 169 바이트

R=range
def g(a):
 def f(x,y,z):
  for i in R(x,y,z):print "  "*(i-1)," ".join([chr(65+j) for j in R((a-i))]+[chr(65+(a-i-2)-j) for j in R((a-i-1))])
 f(a,0,-1);f(2,a,1)

편집 : @ nedla2004 덕분에 5 바이트를 절약했습니다.


변경할 수있는 두 가지가 있습니다. 1.) g세 줄을 넣을 수 있습니다 . 2.) range변수에 할당하십시오 . 이 두 가지를 모두 여기서 볼 수 있습니다 . (참고 : def f(x,y,z):공백이 있기 전에, for루프 전에 탭이 있습니다.
— nedla2004

range교체 할 수 있는 3이 없습니까?
— nedla2004 2

당신은 돌려 4 바이트를 저장할 수 R((a-i))에 R(a-i)와 R((a-i-1))에 R(a-i-1), 당신 할 수 없습니다?
— L3viathan

for목록 이해 내의 루프 앞에서 제거 할 수있는 공백이 2 개 있습니다 .
— Yytsi

뒤에 쓸모없는 공백이 print있습니다.
— Yytsi

6

05AB1E , 13 바이트

암호:

A.ps£û€û€S».c

설명:

A.p             # Push all prefixes of the alphabet.
   s£           # Only get the first input elements.
     û          # Palindromize, turns ['a', 'ab', 'abc'] -> ['a', 'ab', 'abc', 'ab', 'a']
      €û        # Palindromize each, turns ['a', 'ab', 'abc', 'ab', 'a']
                  into... ['a', 'aba', 'abcba', 'aba', 'a']
        €S      # Split each element.
          »     # Gridify, joins the arrays be newlines and the arrays in the arrays 
                  by spaces.
           .c   # Centralize, aligning the text to the center.

용도 CP-1252 인코딩을. 온라인으로 사용해보십시오!


이것이 바로 "중앙 집중식"이 info.txt에서 의미하는 것입니다! 그런데 좋은 해결책.
— Osable

@Osable Yep, 배열뿐만 아니라 줄 바꿈이있는 문자열에서도 작동합니다.
— Adnan

5

MATL , 25 24 바이트

Zv&+64+G-t64>*1&!t0*hTec

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

더 긴 대안 :

  • 1Y20hiZv&+G-t0>*1&!t0*hTe) (26 바이트)
  • Zv&+64+G-t64>*l2&Y"tZyP:o*c (27 바이트)

설명

         % Implicit input 
Zv       % Symmetric range. For input 3 it gives [1 2 3 2 1]
&+       % Matrix of all pairwise additions. For input 3 it gives a 5×5 matrix
64+G     % Add 64 and subtract input. This gives the desired ASCII codes in the
         % central rhombus 
t64>*    % Make values less than 65 equal to 0. This affects entries outside the
         % central rhombus 
1&!      % Permute second and third dimensions. Transforms the 5×5 matrix into
         % a 5×1×5 array
t0*      % Push a copy of that array with all entries equal to 0
h        % Concatenate along the second dimension. Gives a 5×2×5 array
Te       % Collapse the second and third dimensions. Gives a 5×10 matrix
c        % Convert to char. Char zero is displayed as space
         % Implicit display

4

V , 45 바이트

i¬A[À|lDybA"Ó./& 
òÄó¨á© á úe± 
>>.YGp{òd

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

이 었죠 방법 나는 아직 설명을 게시하지 않을거야, 그래서 내가 기대했던 것보다 덜 golfy합니다. 잘만되면 나는 그것을 더 먼저 더럽힐 수있다. 평소와 같이 다음은 hexdump입니다.

0000000: 69ac 415b 1bc0 7c6c 4479 6241 1f12 221b  i.A[..|lDybA..".
0000010: d32e 2f26 200a f2c4 f3a8 e1a9 20e1 20fa  ../& ....... . .
0000020: 65b1 200a 3e3e 2e59 4770 7bf2 64         e. .>>.YGp{.d

4

J, 34 바이트

(' ',u:65+i.26){~0>.]-[:+/~|@i:@<:

숫자를 입력으로 받아서 2D 문자형 배열을 반환합니다.

설명

(' ',u:65+i.26){~0>.]-[:+/~|@i:@<:  input y
                                <:  y - 1
                             i:     "steps" -- i:2 -> -2 1 0 1 2
                           |        absolute value
                        +/~         addition table
                      [:            join right two tines into a conjunction
                    ]-              y - this table
                 0>.                max(0, that)
(' ',u:65+i.26)                     the alphabet preceded by a space
               {~                   index

분해 된 테스트 케이스

   n =: 5
   <: n
4
   i: <: n
_4 _3 _2 _1 0 1 2 3 4
   | i: <: n
4 3 2 1 0 1 2 3 4
   +/~ | i: <: n
8 7 6 5 4 5 6 7 8
7 6 5 4 3 4 5 6 7
6 5 4 3 2 3 4 5 6
5 4 3 2 1 2 3 4 5
4 3 2 1 0 1 2 3 4
5 4 3 2 1 2 3 4 5
6 5 4 3 2 3 4 5 6
7 6 5 4 3 4 5 6 7
8 7 6 5 4 5 6 7 8
   n - +/~ | i: <: n
_3 _2 _1 0 1 0 _1 _2 _3
_2 _1  0 1 2 1  0 _1 _2
_1  0  1 2 3 2  1  0 _1
 0  1  2 3 4 3  2  1  0
 1  2  3 4 5 4  3  2  1
 0  1  2 3 4 3  2  1  0
_1  0  1 2 3 2  1  0 _1
_2 _1  0 1 2 1  0 _1 _2
_3 _2 _1 0 1 0 _1 _2 _3
   0 >. n - +/~ | i: <: n
0 0 0 0 1 0 0 0 0
0 0 0 1 2 1 0 0 0
0 0 1 2 3 2 1 0 0
0 1 2 3 4 3 2 1 0
1 2 3 4 5 4 3 2 1
0 1 2 3 4 3 2 1 0
0 0 1 2 3 2 1 0 0
0 0 0 1 2 1 0 0 0
0 0 0 0 1 0 0 0 0
   u:65
A
   i.26
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
   65+i.26
65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
   u:65+i.26
ABCDEFGHIJKLMNOPQRSTUVWXYZ
   ' ',u:65+i.26
 ABCDEFGHIJKLMNOPQRSTUVWXYZ
   (' ',u:65+i.26) {~ 0 >. n - +/~ | i: <: n
    A
   ABA
  ABCBA
 ABCDCBA
ABCDEDCBA
 ABCDCBA
  ABCBA
   ABA
    A

input으로 시도해 봅시다 5.

테스트 사례

   f =: (' ',u:65+i.26){~0>.]-[:+/~|@i:@<:
   f 1
A
   f 2
 A
ABA
 A
   f 3
  A
 ABA
ABCBA
 ABA
  A
   f 4
   A
  ABA
 ABCBA
ABCDCBA
 ABCBA
  ABA
   A
   f 5
    A
   ABA
  ABCBA
 ABCDCBA
ABCDEDCBA
 ABCDCBA
  ABCBA
   ABA
    A
   f 26
                         A
                        ABA
                       ABCBA
                      ABCDCBA
                     ABCDEDCBA
                    ABCDEFEDCBA
                   ABCDEFGFEDCBA
                  ABCDEFGHGFEDCBA
                 ABCDEFGHIHGFEDCBA
                ABCDEFGHIJIHGFEDCBA
               ABCDEFGHIJKJIHGFEDCBA
              ABCDEFGHIJKLKJIHGFEDCBA
             ABCDEFGHIJKLMLKJIHGFEDCBA
            ABCDEFGHIJKLMNMLKJIHGFEDCBA
           ABCDEFGHIJKLMNONMLKJIHGFEDCBA
          ABCDEFGHIJKLMNOPONMLKJIHGFEDCBA
         ABCDEFGHIJKLMNOPQPONMLKJIHGFEDCBA
        ABCDEFGHIJKLMNOPQRQPONMLKJIHGFEDCBA
       ABCDEFGHIJKLMNOPQRSRQPONMLKJIHGFEDCBA
      ABCDEFGHIJKLMNOPQRSTSRQPONMLKJIHGFEDCBA
     ABCDEFGHIJKLMNOPQRSTUTSRQPONMLKJIHGFEDCBA
    ABCDEFGHIJKLMNOPQRSTUVUTSRQPONMLKJIHGFEDCBA
   ABCDEFGHIJKLMNOPQRSTUVWVUTSRQPONMLKJIHGFEDCBA
  ABCDEFGHIJKLMNOPQRSTUVWXWVUTSRQPONMLKJIHGFEDCBA
 ABCDEFGHIJKLMNOPQRSTUVWXYXWVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWXYZYXWVUTSRQPONMLKJIHGFEDCBA
 ABCDEFGHIJKLMNOPQRSTUVWXYXWVUTSRQPONMLKJIHGFEDCBA
  ABCDEFGHIJKLMNOPQRSTUVWXWVUTSRQPONMLKJIHGFEDCBA
   ABCDEFGHIJKLMNOPQRSTUVWVUTSRQPONMLKJIHGFEDCBA
    ABCDEFGHIJKLMNOPQRSTUVUTSRQPONMLKJIHGFEDCBA
     ABCDEFGHIJKLMNOPQRSTUTSRQPONMLKJIHGFEDCBA
      ABCDEFGHIJKLMNOPQRSTSRQPONMLKJIHGFEDCBA
       ABCDEFGHIJKLMNOPQRSRQPONMLKJIHGFEDCBA
        ABCDEFGHIJKLMNOPQRQPONMLKJIHGFEDCBA
         ABCDEFGHIJKLMNOPQPONMLKJIHGFEDCBA
          ABCDEFGHIJKLMNOPONMLKJIHGFEDCBA
           ABCDEFGHIJKLMNONMLKJIHGFEDCBA
            ABCDEFGHIJKLMNMLKJIHGFEDCBA
             ABCDEFGHIJKLMLKJIHGFEDCBA
              ABCDEFGHIJKLKJIHGFEDCBA
               ABCDEFGHIJKJIHGFEDCBA
                ABCDEFGHIJIHGFEDCBA
                 ABCDEFGHIHGFEDCBA
                  ABCDEFGHGFEDCBA
                   ABCDEFGFEDCBA
                    ABCDEFEDCBA
                     ABCDEDCBA
                      ABCDCBA
                       ABCBA
                        ABA
                         A

2
출력에 공백이 있으면 부족한 것입니까? 다른 모든 답변은 공백으로 출력합니다. 나는이 너무 MATLAB에서 꽤 좀 더 쉽게 만들 것 때문에 (만약을 요청했습니다 :).
— 스튜이 그리핀을

공간이없는 것 같습니다
— DJMcMayhem

@DrMcMoylex 나는 도전을 잘못 읽었으며 문자가있는 2D char 배열을 반환하는 것으로 충분하다고 생각했습니다. 수정 작업 rn
— Conor O'Brien

4

젤리 , 13 바이트

RØAḣUz⁶ŒBṚŒḄG

TryItOnline!

어떻게?

RØAḣUz⁶ŒBṚŒḄG - Main link: n         e.g. 3
R             - range                     [1,2,3]
 ØA           - uppercase alphabet yield  "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
   ḣ          - head                      ["A","AB","ABC"]
    U         - upend (vectorises)        ["A","BA","CBA"]
     z        - transpose with filler...
      ⁶       -     space character       ["ABC"," AB","  A"]
       ŒB     - bounce (vectorises)       ["ABCBA"," ABA ","  A  "]
         Ṛ    - reverse                   ["  A  "," ABA ","ABCBA"]
          ŒḄ  - bounce (flat)             ["  A  "," ABA ","ABCBA"," ABA ","  A  "]
            G - grid format (join each with spaces and join with line feeds)
                                              A    
                                            A B A  
                                          A B C B A
                                            A B A  
                                              A    


2

C #을 266 263 262 261 245 238 235 232 바이트

골프 :

List<string> F(int n){int i=0;var l=new List<string>();for(;i<n;i++){var h="";for(var c='A';c<'B'+i;c++)h+=" "+c;l.Add(new string(' ',(n-i+1)*2)+h+" "+string.Concat(h.Remove(i*2).Reverse()));}for(i-=2;i>=0;i--)l.Add(l[i]);return l;}

주석이 달린 골퍼 :

    List<string> F(int n)
    {
        int i = 0;
        var l = new List<string>(); //collection of lines

        for (; i < n; i++)
        {
            var h = ""; //half of line

            //adding letters to first half of line
            for (var c = 'A'; c < 'B' + i; c++)
                h += " " + c;

            //adding leading spaces + half of line + reversed half of line to list
            l.Add(new string(' ', (n - i + 1)*2) + h + " " + string.Concat(h.Remove(i*2).Reverse()));
        }

        //adding lines in descending order
        for (i -= 2; i >= 0; i--)
            l.Add(l[i]);

        return l;
    }

사용해보십시오 : http://rextester.com/WIL67940

문자열 목록을 반환합니다. 각 문자열에는 하나의 출력 행이 있습니다.

나는 재미와 훈련을 위해 그렇게했습니다. C #으로 코드 골프에서 우승하는 것이 범위를 벗어났습니다.

EDIT1 : 문자열 보간을 +연산자로 변경했습니다 .

EDIT2 : c <= 'A' + i =>c < 'B' + i

EDIT3 : char와 교환var .

EDIT4 : 반환 유형을 void에서List .

EDIT5 : 불필요한 변수 제거.

EDIT6 : 줄 반을 분리하는 새로운 방법.

EDIT7 : @Kaspar Kjeldsen, 감사합니다.


1
string h = ""를 교체하여 문자를 제거 할 수 있습니다. var h = "";
— Kaspar Kjeldsen

@KasparKjeldsen 나는 그것을 생략했다고 믿을 수 없다.
— paldir

1
더 짧아 질 수 있습니다! rextester.com/JLUL92950 string [] F (int n) {int i = 0; var q = 2 * n-1; var l = 새 문자열 [q]; for (; i <n; i ++) {var h = ""; for (var c = 'A'; c < 'B'+ i; c ++) h + = ""+ c; l [qi-1] = l [i] = 새 문자열 ( '', (n- i + 1) * 2) + h + ""+ string.Concat (h.Remove (i * 2) .Reverse ());} 리턴 l;}
— Kaspar Kjeldsen

2

C, 124 123 바이트

Mukul Kumar 덕분에 1 바이트 절약

현재 이중 루프를 단일 루프로 변환하기 위해 머리를 잡을 수는 없지만 잠시 동안 그대로 두십시오. 실제로 이것은 더 큽니다

for(l=0;l<4*n*(4*n+1);++l){
  i=l/(4*n+1)-2*n;
  j=l%(4*n+1)-2*n;

그래서 난 그냥 중첩 루프를 보자.

i,j,k;f(n){for(i=-2*n-1;++i<2*n;){for(j=-2*n-1;++j<=2*n;k=abs(i/2)+abs(j/2),putchar(j-2*n?k>=n||i%2||j%2?32:65+n+~k:10));}}

용도 맨하탄 규범을 을 다이아몬드 모양을 얻습니다.

언 골프 드 :

i,j,k;
f(n){
 for(i=-2*n-1;++i<2*n;){
  for(j=-2*n-1;++j<=2*n;
   k=abs(i/2)+abs(j/2),
   putchar(j-2*n?k>=n||i%2||j%2?32:65+n+~k:10)
  );
 }
}

넌 대체하여 하나의 바이트를 줄일 수 j==2*n와 j-2*n앤드 교환 ? ()하여 값을 :()값
— Mukul을 쿠마

2

파이썬 158 154 140 139 바이트

r=range
s=int(raw_input())
a=map(chr,range(65,91))
for i in r(0,s)+r(0,s-1)[::-1]:
 print (' '.join(a[:i+1]+a[:i][::-1])).center(s*4-2,' '))

이것은 내 첫 번째 게시물이므로 조심하십시오! 문자열을 뒤집기 위해 [::-1]을 많이 사용했기 때문에 최적화가 필요할 수 있습니다. 의견 환영합니다.

EDITS :

Python 코드 골프 주제에 대한 유용한 링크를 가리키는 포인터와 문자 사이에 공백이 필요하다는 것을 알려주는 @Rod에게 감사드립니다. 또한 공백 제거에 대한 일반적인 팁을 제공하는 @wec에게 감사합니다.


=쉼표 뒤에 그리고 print 문에서 여는 괄호 앞에 연산자의 양쪽에서 공백을 제거 할 수 있습니다 (예 :`=`makes ). 파이썬 들여 쓰기는 일관성이있는 한 어느 레벨이든 가능하므로 print 문을 4 개가 아닌 1 개만 독립적으로 사용하여 3자를 절약 할 수 있습니다. 그것들은 내가 볼 수있는 쉬운 절약입니다.
— wec

c :, 우리는 많은 파이썬 팁 (알파벳을 생성하는 더 짧은 대안 포함) 이 있는 이 멋진 주제 를 가지고 있습니다 . 또한 z한 번만 사용하므로 변수를 사용할 필요가 없으며 함수에 s*2-1직접 입력하십시오 center. 하나의 세부 사항, 출력은 문자 사이에 공백이 있어야합니다.' '.join 있어야하며 인쇄 직후에 충분해야합니다 (그러나 s*2-1올바른 값을 얻으려면 재 작업해야 합니다).
— Rod

또한, 가치를 시작 기본 range및 위해는 [:]것입니다 0당신이 명시 적으로 둘 필요가 돈 때문에,
— 로드

2

Brain-Flak, 630 + 3 = 633 바이트

이 -A플래그를 실행해야합니다

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

(({})){(({}[()])<({}<({}<>)><>)<>(({}<>)<(({}[({})()])<{({}[()]<({}<(((((()()()()){}){}){}))>)>)}{}(({}<((((((()()()()){}){}){}){}()<>)<>)>)<{({}[()]<((()({}<(((((()()()()){}){}){}<>)<>)>)<>)<>)>)}{}({}<(((((()()()()){}){}){}<>)<>)>)((((()()()()){}){}){})>){(({})[()]<(({}((((()()()()){}){}){}){}<>)<>)(((((()()()()){}){}){}<>)<>)>)}{}>){({}[()]<<>(((((()()()()){}){}){}))<>>)}{}(((()()()()()){}<>)<>)>)>)}{}{}{}([]){((({}[()])<{({}[()]<({}<({}<>)<>>)>)}{}>)<{({}[()]<<>({}<>)>)}{}>)}{}((()()()()()){})<>{}([]){((({}[()])<{({}[()]<({}<({}<>)<>>)>)}{}>)<{({}[()]<<>({}<>)>)}{}>)}{}{{}({}[(()()()()()){}])}{}([]){{}({}<>)<>([])}{}<>

이것은 훌륭한 골프는 아니지만이 도전은 Brain-Flak에서 매우 어렵습니다.



1

TSQL, 261 바이트

한 줄 쿼리-루핑 없음

DECLARE @i INT =5;

WITH C as(SELECT top(@i*2-1)number z
FROM master..spt_values WHERE'P'=type)SELECT
top(@i*2-1)space(abs(z-@i+1)*2)+v+STUFF(reverse(v),1,3,'')FROM(SELECT
z,(SELECT top((@i-abs(@i-z-1)))char(65+z)+' 'FROM c
for xml path(''),type).value('.','varchar(52)')v FROM c)d

불행히도 바이올린은 출력 라인의 시작 부분에서 공간을 차지합니다. SQL Server 관리 스튜디오에서 실행하면 공백이 생깁니다.

깡깡이


1

루비, 137115100 84 바이트

->n{e=->s{s+s.reverse[1..-1]};e[(0..n-1).map{|i|"  "*(n-i)+e[[*?A..?Z][0..i]*' ']}]}

의견에 대한 manatwork 감사합니다.


좋은 첫 대답. 이를 향상시키는 방법 은 Ruby 골프 팁을 참조하십시오 . 우선, 기능에 관한 kernigh 의 팁 . BTW, 0..n-1→ 0...n.
— manatwork

1
삼항 논리를 반대로하면 단일 문자 관계 연산자를 사용할 수 있습니다 n>0?…:"".
— manatwork

1
“문제는 프로그램이나 기능을 작성하는 것입니다.” 익명 람다로 만드는 것이 좋습니다. 즉, 매개 변수를 정수로 직접 사용할 수 있습니다.
— manatwork

1

Befunge 93 , 175 바이트

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

아마 골프를 잘하지 못했을 것입니다. 오 잘 이것은 재미로 충분히 어려웠습니다.

&:00p"B"\- :13v
v,: _v#`"@"<p5<
v," "<v`+*9<
>" ",: 35g7^
v47"v"_>1+ v
>p#  0^:>- v
v"A"g53<1v<
>+00g-` |53
v">",+91<p+
>74p35g:v11
_v# -g00<+^ _@#:
1>59*:91v> v
^p+199p8>#+ <

그것이 어떻게 작동하는지 알아내는 행운을 빕니다! 나는 거의 알지 못한다.


런타임 코드 수정을 잘 사용합니다.
— James Holderness

1

C #, 199 바이트

q=>{Action<int>L=x=>{var s="";var k=0;for(;k<x;)s+=(char)('A'+k++)+" ";for(--k;--k>=0;)s+=(char)('A'+k)+" ";Console.WriteLine(new string(' ',(q-x)*2)+s);};var i=0;for(;i<q;)L(++i);for(;i>1;)L(--i);};

항상 그렇듯이 C #은 많은 골프 언어는 아니지만 난해한 코드보다 "읽기 쉬운"코드를 선호합니다. 또한 나는 방금 재미를 위해 이것을했다 :)

다음은 ungolfed 버전이므로 내가 한 일을 쉽게 이해할 수 있습니다.

Action<int> C = q => 
{
    Action<int> L = x => 
    {
        var s = "";
        var k = 0;
        for (; k < x;)
            s += (char)('A' + k++) + " ";
        for (--k; --k >= 0;)
            s += (char)('A' + k) + " ";
        Console.WriteLine(new string(' ', (q - x) * 2) + s);
    };
    var i = 0;
    for (; i < q;)
        L(++i);
    for (; i > 1;)
        L(--i);
};

(이것은 많이 최적화 될 수 있다고 생각합니다 ..)


1

자바, 213 바이트

void p(int n){int i=1,s=1,f,c;while(i>0){f=(n+1-i)*2;System.out.printf("%"+f+"s","");c=65;for(;c<64+i;)System.out.printf("%c ",c++);for(;c>64;)System.out.printf("%c ",c--);System.out.println();if(i==n)s=-1;i+=s;}}

언 골프 드 :

void p(int n) {
    int i = 1, s = 1, f, c;
    while (i > 0) {
        f = (n + 1 - i) * 2;
        System.out.printf("%" + f + "s", "");
        c = 65;
        for (; c < 64 + i; ) System.out.printf("%c ", c++);
        for (; c > 64; ) System.out.printf("%c ", c--);
        System.out.println();
        if (i == n) s = -1;
        i += s;
    }
}

0

자바, 394 바이트

나는 일반적으로 C #을 수행하지만 혼합하는 것이 좋습니다 ...

골프 :

String P(int n){String a="ABCDEFGHIJKLMNOPQRSTUVWXYZ",o="",k="",s="";int i=0,j=0,l=0;java.util.List<String>b=new java.util.ArrayList<String>();for(i=1;i<=n;i++){k="";s=a.substring(0,i);l=s.length();for(j=0;j<l;j++)k+=s.toCharArray()[j]+" ";while(k.length()<n+n)k=" "+k;if(i>1)for(j=l-2;j>=0;j--)k+=s.toCharArray()[j]+" ";k+="\r\n";b.add(k);o+=k;}for(i=b.size()-2;i>=0;i--)o+=b.get(i);return o;}

언 골프 드 :

public String P(int n)
{
    String a = "ABCDEFGHIJKLMNOPQRSTUVWXYZ", o ="", k="",s="";
    int i =0, j=0, l=0;
    java.util.List<String> b = new java.util.ArrayList<String>();
    for (i = 1; i <= n; i++) {
        k = "";
        s = a.substring(0, i);
        l = s.length();

        for (j = 0; j < l; j++)
            k += s.toCharArray()[j] + " ";

        while(k.length() < n + n)
            k= " " + k;

        if(i > 1)
            for (j = l-2; j >= 0; j--)
                k += s.toCharArray()[j] + " ";           

        k += "\r\n";
        b.add(k);
        o += k;
     }

    for (i = b.size()-2; i >= 0; i--)
        o += b.get(i);

    return o;
}

테스트:

BuildAnAlphabetPyramid b = new BuildAnAlphabetPyramid();
System.out.println(b.P(5));
System.out.println(b.P(26));

        A 
      A B A 
    A B C B A 
  A B C D C B A 
A B C D E D C B A 
  A B C D C B A 
    A B C B A     
      A B A 
        A 

                                                  A 
                                                A B A 
                                              A B C B A 
                                            A B C D C B A 
                                          A B C D E D C B A 
                                        A B C D E F E D C B A 
                                      A B C D E F G F E D C B A 
                                    A B C D E F G H G F E D C B A 
                                  A B C D E F G H I H G F E D C B A 
                                A B C D E F G H I J I H G F E D C B A 
                              A B C D E F G H I J K J I H G F E D C B A 
                            A B C D E F G H I J K L K J I H G F E D C B A 
                          A B C D E F G H I J K L M L K J I H G F E D C B A 
                        A B C D E F G H I J K L M N M L K J I H G F E D C B A 
                      A B C D E F G H I J K L M N O N M L K J I H G F E D C B A 
                    A B C D E F G H I J K L M N O P O N M L K J I H G F E D C B A 
                  A B C D E F G H I J K L M N O P Q P O N M L K J I H G F E D C B A 
                A B C D E F G H I J K L M N O P Q R Q P O N M L K J I H G F E D C B A 
              A B C D E F G H I J K L M N O P Q R S R Q P O N M L K J I H G F E D C B A 
            A B C D E F G H I J K L M N O P Q R S T S R Q P O N M L K J I H G F E D C B A 
          A B C D E F G H I J K L M N O P Q R S T U T S R Q P O N M L K J I H G F E D C B A 
        A B C D E F G H I J K L M N O P Q R S T U V U T S R Q P O N M L K J I H G F E D C B A 
      A B C D E F G H I J K L M N O P Q R S T U V W V U T S R Q P O N M L K J I H G F E D C B A 
    A B C D E F G H I J K L M N O P Q R S T U V W X W V U T S R Q P O N M L K J I H G F E D C B A 
  A B C D E F G H I J K L M N O P Q R S T U V W X Y X W V U T S R Q P O N M L K J I H G F E D C B A 
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z Y X W V U T S R Q P O N M L K J I H G F E D C B A 
  A B C D E F G H I J K L M N O P Q R S T U V W X Y X W V U T S R Q P O N M L K J I H G F E D C B A 
    A B C D E F G H I J K L M N O P Q R S T U V W X W V U T S R Q P O N M L K J I H G F E D C B A 
      A B C D E F G H I J K L M N O P Q R S T U V W V U T S R Q P O N M L K J I H G F E D C B A 
        A B C D E F G H I J K L M N O P Q R S T U V U T S R Q P O N M L K J I H G F E D C B A 
          A B C D E F G H I J K L M N O P Q R S T U T S R Q P O N M L K J I H G F E D C B A 
            A B C D E F G H I J K L M N O P Q R S T S R Q P O N M L K J I H G F E D C B A 
              A B C D E F G H I J K L M N O P Q R S R Q P O N M L K J I H G F E D C B A 
                A B C D E F G H I J K L M N O P Q R Q P O N M L K J I H G F E D C B A 
                  A B C D E F G H I J K L M N O P Q P O N M L K J I H G F E D C B A 
                    A B C D E F G H I J K L M N O P O N M L K J I H G F E D C B A 
                      A B C D E F G H I J K L M N O N M L K J I H G F E D C B A 
                        A B C D E F G H I J K L M N M L K J I H G F E D C B A 
                          A B C D E F G H I J K L M L K J I H G F E D C B A 
                            A B C D E F G H I J K L K J I H G F E D C B A 
                              A B C D E F G H I J K J I H G F E D C B A 
                                A B C D E F G H I J I H G F E D C B A 
                                  A B C D E F G H I H G F E D C B A 
                                    A B C D E F G H G F E D C B A 
                                      A B C D E F G F E D C B A 
                                        A B C D E F E D C B A 
                                          A B C D E D C B A 
                                            A B C D C B A 
                                              A B C B A 
                                                A B A 
                                                  A 

0

R, 100 97 87 바이트

x=scan();z=LETTERS;for(i in c(1:x,x:2-1))cat(rep(" ",x-i+1),z[1:i],if(i>1)z[i:2-1],"\n")

4:
#>         A 
#>       A B A 
#>     A B C B A 
#>   A B C D C B A 
#>     A B C B A 
#>       A B A 
#>         A

(업데이트 : scan() 입력; 남용 (x-1) : 1 == x : 2-1.)

외모로 키워드 언어 중 하나에 너무 초라하지는 않습니다 (특수 문자는 항상 더 좋을 것입니다).


0

PHP, 122 116 바이트

for($i=1-$n=$argv[1];$i<$n;)echo str_pad("",$a=abs($i++)),$s=join(range(A,chr(64+$n-$a))),substr(strrev($s),1),"\n";

더 짧은 방법이 있습니까?


0

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

n=>[...Array(n+n--)].map((_,i,a)=>a.map((_,j)=>(j=10+n-g(i)-g(j))>9?(10-j).toString(36):` `,g=i=>i<n?n-i:i-n).join` `).join`\n`

어디 \n리터럴 개행 문자를 나타냅니다. 소문자로 출력합니다.


0

배치, 269 바이트

@echo off
set/an=%1-1
set a=ABCDEFGHIJKLMNOPQRSTUVWXYZ                         
for /l %%i in (-%n%,1,%n%)do set i=%%i&call:l
exit/b
:l
set s=
for /l %%j in (-%n%,1,%n%)do set j=%%j&call:c
echo%s%
exit/b
:c
set/aj=n-%i:-=%-%j:-=%
call set s= %%a:~%j%,1%%%s%

2 호선은 25 칸으로 끝납니다. 즉, 알파벳 색인이 음수가되면 해당 사각형은 단순히 공백으로 유지됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.