알파벳 피라미드 만들기


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*nj-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-10...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.