Xây dựng một Kim tự tháp Bảng chữ cái


19

Hôm nay chúng ta sẽ xây dựng một kim tự tháp bằng chữ! Dưới đây là một kim tự tháp mẫu cho 5 chữ cái đầu tiên:

  1. Viết 5 chữ cái đầu tiên có khoảng trắng ở giữa, đầu tiên tăng dần và sau đó giảm dần.

    A B C D E D C B A
    
  2. Thực hiện tương tự cho bốn chữ cái đầu tiên trên dòng trên, nhưng có thêm hai khoảng trắng hàng đầu:

      A B C D C B A
    A B C D E D C B A
    
  3. Lặp lại bước tương tự cho đến khi dòng cuối cùng chỉ là '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. Lặp lại các bước hai và ba đi xuống thay vì đi lên:

            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 
    

Mô hình tương tự này có thể được mở rộng lên đến 26 ký tự. Thử thách của bạn là viết một chương trình hoặc hàm lấy một số nguyên làm đầu vào và tạo ra kim tự tháp chữ cái tương ứng. Bạn có thể chọn sử dụng các ký tự viết hoa hoặc viết thường. Bạn luôn có thể cho rằng đầu vào sẽ là một số nguyên [1, 26]và đầu ra có thể là bất kỳ định dạng hợp lý nào cho chuỗi 2d. Ví dụ: một chuỗi có dòng mới trong đó, một mảng các ký tự, in thành tệp, v.v ... Mỗi dòng có thể có dấu cách ở trên đó và bạn có thể tùy ý xuất một dòng mới.

Dưới đây là một số ví dụ đầu vào / đầu ra:

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

Như mọi khi, đây là để áp dụng sơ hở tiêu chuẩn và câu trả lời ngắn nhất bằng byte sẽ thắng!


3
Liên quan - cùng một thử thách với các ký tự hơi khác nhau, không có khoảng trắng, không có đầu vào
Sp3000

1
@stewiegriffin Không, không gian nên có một trong hai cách.
DJMcMayhem

4
Cuộn trang này tạo ra ảo ảnh quang học gọn gàng cho đầu ra 26.
cobaltduck

Câu trả lời:


7

Python, 184 174 169 byte

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)

Chỉnh sửa: đã lưu 5 byte nhờ @ nedla2004


Tôi thấy hai điều có thể thay đổi. 1.) Bạn có thể đặt gtrên ba dòng. 2.) Gán rangecho một biến. Bạn có thể thấy cả hai ở đây . (Lưu ý: Trước khi def f(x,y,z):có khoảng for
trắng

Không có 3 rangegiây mà bạn có thể thay thế?
nedla2004

Bạn có thể lưu 4 byte bằng cách chuyển R((a-i))vào R(a-i)R((a-i-1))vào R(a-i-1), phải không?
L3viathan

Có 2 khoảng trắng có thể được loại bỏ trước khi các forvòng lặp trong phần hiểu danh sách.
Yytsi

Một khoảng trắng vô dụng sau print.
Yytsi

6

05AB1E , 13 byte

Mã số:

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

Giải trình:

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.

Sử dụng mã hóa CP-1252 . Hãy thử trực tuyến!


Vì vậy, đây là những gì "tập trung" là viết tắt của info.txt! Bằng cách này, giải pháp tốt đẹp.
Có thể vào

@Osable Yep, nó cũng hoạt động cho các chuỗi có dòng mới trong đó (chứ không chỉ là mảng).
Ad Nam

5

MATL , 25 24 byte

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

Hãy thử trực tuyến!

Các lựa chọn thay thế dài hơn:

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

Giải trình

         % 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 byte

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

Hãy thử trực tuyến!

Đây rốt cuộc là cách ít golfy hơn tôi đã hy vọng, vì vậy tôi sẽ không gửi một lời giải thích nào. Hy vọng rằng tôi có thể giảm nó xuống một số đầu tiên. Như thường lệ, đây là một 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 byte

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

Lấy số làm đầu vào và trả về một mảng ký tự 2D.

Giải trình

(' ',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

Trường hợp thử nghiệm phân hủy

   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

Hãy thử điều này với đầu vào 5.

Các trường hợp thử nghiệm

   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
Bạn có chắc chắn thiếu nếu không gian trong đầu ra là OK? Tất cả các câu trả lời khác xuất ra điều này với không gian. Tôi đã hỏi chỉ trong trường hợp (vì điều này cũng sẽ giúp MATLAB dễ dàng hơn một chút. :)
Stewie Griffin

Dường như còn thiếu một số khoảng trống
DJMcMayhem

@DrMcMoylex Tôi đã đọc sai thử thách, tôi nghĩ trả lại một mảng char 2D với các chữ cái là đủ. Làm việc trên một bản sửa lỗi
Conor O'Brien

4

Thạch , 13 byte

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

Dùng thử trực tuyến!

Làm sao?

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 byte

Chơi gôn

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;}

Ungolfed với ý kiến:

    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;
    }

Hãy dùng thử: http://rextester.com/WIL67940

Trả về danh sách các chuỗi. Mỗi chuỗi chứa một dòng đầu ra.

Tôi đã làm điều đó cho vui và đào tạo. Tôi nhận ra rằng việc giành được bất kỳ môn đánh gôn nào với C # là nằm ngoài phạm vi.

EDIT1: Thay đổi nội suy chuỗi thành +toán tử.

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

EDIT3: Hoán đổi charvới var.

EDIT4: Loại trả về thay đổi từ voidđến List.

EDIT5: Loại bỏ các biến không cần thiết.

EDIT6: Cách mới để phân chia nửa dòng.

EDIT7: @Kaspar Kjeldsen, cảm ơn bạn.


1
Bạn có thể tắt một ký tự bằng cách thay thế chuỗi h = ""; với var h = "";
Kaspar Kjeldsen

@KasparKjeldsen Tôi không thể tin rằng tôi đã bỏ qua điều đó.
paldir

1
Có thể nhận được vẫn còn ngắn hơn! rextester.com/JLUL92950 chuỗi [] F (int n) {int i = 0; var q = 2 * n-1; var l = new chuỗi [q]; for (; i <n; i ++) {var h = ""; for (var c = 'A'; c <'B' + i; c ++) h + = "" + c; l [qi-1] = l [i] = chuỗi mới ('', (n- i + 1) * 2) + h + "" + chuỗi.Concat (h.Remove (i * 2) .Reverse ());} return l;}
Kaspar Kjeldsen

2

C, 124 123 byte

Tiết kiệm 1 byte nhờ Mukul Kumar

Hiện tại không thể có được đầu của tôi để chuyển đổi vòng lặp đôi thành một vòng duy nhất, sẽ để nó như thế này vào lúc này. Trên thực tế, cái này lớn hơn

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

Vì vậy, tôi chỉ để các vòng lặp lồng nhau.

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));}}

Sử dụng định mức Manhattan để có được hình dạng kim cương.

Ung dung:

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)
  );
 }
}

Bạn có thể giảm một byte bằng cách thay thế j==2*nvới j-2*nvà trao đổi các ? ()giá trị với :()giá trị
Mukul Kumar

2

Python, 158 154 140 139 byte

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,' '))

Đây là bài viết đầu tiên của tôi vì vậy hãy nhẹ nhàng! Tôi đã sử dụng rất nhiều [:: - 1] để đảo ngược chuỗi, vì vậy có thể có một số tối ưu hóa để có ở đó. Bình luận hoan nghênh.

CHỈNH SỬA:

Cảm ơn @Rod cho con trỏ đến liên kết hữu ích cho chủ đề golf mã Python và cũng nhắc nhở tôi rằng các chữ cái cần khoảng cách giữa chúng. Cũng cảm ơn @wec về những lời khuyên chung về việc xóa dấu cách.


Bạn có thể xóa khoảng trắng ở hai bên của toán tử của mình (ví dụ `=` trở thành =), sau dấu phẩy và trước dấu ngoặc đơn mở trong câu lệnh in. Việc thụt lề Python có thể là bất kỳ cấp nào miễn là phù hợp, vì vậy bạn có thể lưu 3 ký tự bằng cách độc lập câu lệnh in của mình chỉ một khoảng trắng thay vì bốn. Đó là những khoản tiết kiệm dễ dàng tôi có thể thấy.
wec

Chào mừng c :, chúng tôi có chủ đề hay này với rất nhiều mẹo về python (bao gồm một cách thay thế ngắn hơn để tạo bảng chữ cái). Ngoài ra, vì bạn zchỉ sử dụng một lần, bạn không cần sử dụng biến, chỉ cần đặt s*2-1trực tiếp vào centerhàm. Chỉ cần một chi tiết, đầu ra cần có khoảng trắng giữa các chữ cái, ' '.joinngay sau khi in là đủ (nhưng bạn cần làm lại s*2-1để có giá trị đúng).
Rod

Ngoài ra, giá trị bắt đầu mặc định cho rangevà cho [:]0, vì vậy bạn không cần phải đặt nó một cách rõ ràng
Rod

2

Brain-Flak, 630 + 3 = 633 byte

Điều này đòi hỏi -Acờ phải chạy

Dùng thử trực tuyến

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

Đây không phải là một môn golf tuyệt vời nhưng thử thách này khá khó khăn trong Brain-Flak



1

TSQL, 261 byte

Truy vấn một dòng - không lặp

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

Thật không may, fiddle ăn hết khoảng trống ở đầu các dòng đầu ra. Không gian sẽ ở đó nếu được thực thi trong studio quản lý SQL Server

Vĩ cầm


1

Ruby, 137 115 100 84 byte

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

Cảm ơn manatwork cho các ý kiến.


Câu trả lời đầu tiên tốt đẹp. Để biết cách cải thiện nó, hãy xem Mẹo chơi golf trong Ruby . Trước hết, kernigh 's tip liên quan đến chức năng. BTW, 0..n-10...n.
manatwork

1
Nếu bạn đảo ngược logic ternary, bạn có thể sử dụng một toán tử quan hệ ký tự duy nhất : n>0?…:"".
manatwork

1
Thử thách của bạn là viết một chương trình hoặc chức năng. Tốt hơn là làm cho nó trở thành một lambda ẩn danh - có thể lấy tham số của nó trực tiếp làm số nguyên.
manatwork

1

Befunge 93 , 175 byte

Hãy thử trực tuyến!

Có lẽ không chơi golf tốt lắm. Ồ tốt Điều này đã đủ khó với befunge:

&: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>#+ <

Chúc may mắn tìm ra cách nó hoạt động! Tôi hầu như không biết.


Sử dụng tốt một sửa đổi mã thời gian chạy.
James Holdiness

1

C #, 199 byte

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);};

Như mọi khi, C # không phải là ngôn ngữ chơi gôn, nhưng tôi thích mã "dễ đọc" hơn nhiều so với Mã bí truyền. Ngoài ra tôi chỉ làm điều này cho vui :)

Đây là phiên bản không có bản quyền, vì vậy bạn có thể dễ dàng hiểu những gì tôi đã làm:

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);
};

(Tôi nghĩ rằng điều này có thể được tối ưu hóa rất nhiều mặc dù ..)


1

Java, 213 byte

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;}}

Ung dung:

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

Java, 394 byte

Tôi thường làm C #, nhưng thật tốt khi kết hợp nó ...

Chơi gôn

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;}

Ung dung:

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;
}

Kiểm tra:

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 byte

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

(Cập nhật: scan()cho đầu vào; bị lạm dụng (x-1): 1 == x: 2-1.)

Không quá tồi tệ đối với một trong những ngôn ngữ từ khóa bởi vẻ ngoài của nó (những ngôn ngữ đặc biệt đó sẽ luôn tốt hơn).


0

PHP, 122 116 byte

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";

Có cách nào ngắn hơn không?


0

JavaScript (ES6), 121 byte

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`

Trường hợp \nđại diện cho nhân vật dòng chữ mới. Đầu ra trong trường hợp thấp hơn.


0

Mẻ, 269 byte

@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%

Dòng 2 kết thúc trong 25 không gian; điều này có nghĩa là khi chỉ số bảng chữ cái đi tiêu cực, các ô vuông đơn giản là trống.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.