Membangun Piramida Alfabet

19

Hari ini kita akan membangun piramida dari huruf! Berikut contoh piramida huruf untuk 5 huruf pertama:

  1. Tulis 5 huruf pertama dengan spasi di antara, pertama naik dan kemudian turun.

    A B C D E D C B A
    
  2. Lakukan hal yang sama untuk empat huruf pertama pada baris di atas, tetapi dengan dua spasi tambahan:

      A B C D C B A
    A B C D E D C B A
    
  3. Ulangi langkah yang sama sampai baris terakhir hanya '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. Ulangi langkah dua dan tiga turun alih-alih naik:

            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 
    

Pola yang sama ini dapat diperpanjang hingga 26 karakter. Tantangan Anda adalah menulis program atau fungsi yang mengambil bilangan bulat sebagai input, dan menghasilkan piramida huruf yang sesuai. Anda dapat memilih untuk menggunakan karakter huruf besar atau kecil. Anda mungkin selalu menganggap bahwa input akan berupa bilangan bulat [1, 26], dan output mungkin berupa format apa pun untuk string 2d. Misalnya, string dengan baris baru di dalamnya, array karakter, mencetak ke file, dll. Setiap baris mungkin memiliki spasi tambahan, dan Anda dapat secara opsional menampilkan satu baris tambahan.

Berikut beberapa contoh input / output:

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

Seperti biasa, ini adalah sehingga celah standar berlaku dan jawaban terpendek dalam byte menang!

DJMcMayhem
sumber
3
Terkait - tantangan yang sama dengan karakter yang sedikit berbeda, tanpa spasi, tanpa input
Sp3000
1
@stewiegriffin Tidak, spasi harus ada di sana.
DJMcMayhem
4
Menggulir halaman ini menghasilkan ilusi optik yang rapi untuk 26 output.
cobaltduck

Jawaban:

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)

Sunting: disimpan 5 byte berkat @ nedla2004

nephi12
sumber
Saya melihat dua hal yang bisa diubah. 1.) Anda dapat memakai gtiga baris. 2.) Tetapkan rangeke variabel. Anda dapat melihat keduanya di sini . (Catatan: Sebelum def f(x,y,z):ada spasi, sebelum forloop ada tab.
nedla2004
Apakah tidak ada 3 rangeyang bisa Anda ganti?
nedla2004
Anda dapat menyimpan 4 byte dengan mengubah R((a-i))menjadi R(a-i)dan R((a-i-1))menjadi R(a-i-1), bukan?
L3viathan
Ada 2 ruang yang dapat dihapus dari sebelum forloop di dalam daftar pemahaman.
Yytsi
Ruang kosong yang tidak berguna setelahnya print.
Yytsi
6

05AB1E , 13 byte

Kode:

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

Penjelasan:

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.

Menggunakan pengkodean CP-1252 . Cobalah online!

Adnan
sumber
Jadi inilah yang dimaksud dengan "terpusat" di info.txt! Omong-omong solusi bagus.
Osable
@ Yup Dapat Digunakan, ini juga berfungsi untuk string dengan baris baru di dalamnya (bukan hanya array).
Adnan
5

MATL , 25 24 byte

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

Cobalah online!

Alternatif yang lebih panjang:

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

Penjelasan

         % 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
Luis Mendo
sumber
4

V , 45 byte

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

Cobalah online!

Ini akhirnya menjadi jauh kurang golf daripada yang saya harapkan, jadi saya belum akan memposting penjelasan. Mudah-mudahan saya bisa mengurangi lebih dulu. Seperti biasa, ini 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
DJMcMayhem
sumber
4

J, 34 byte

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

Mengambil nomor sebagai input dan mengembalikan array karakter 2D.

Penjelasan

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

Test case terurai

   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

Mari kita coba ini dengan masukan 5.

Uji kasus

   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
Conor O'Brien
sumber
2
Apakah Anda yakin kekurangannya jika ruang dalam output OK? Semua jawaban lain menghasilkan ini dengan spasi. Saya sudah bertanya berjaga-jaga (karena ini akan membuatnya sedikit lebih mudah di MATLAB juga. :)
Stewie Griffin
Tampaknya ada beberapa ruang yang hilang
DJMcMayhem
@DrMcMoylex Saya salah membaca tantangan, saya pikir mengembalikan array char 2D dengan huruf sudah cukup. Bekerja pada perbaikan rn
Conor O'Brien
4

Jelly , 13 byte

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

TryItOnline!

Bagaimana?

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    
Jonathan Allan
sumber
3

Pyke, 12 byte

FhGR<Q{s
)OX

Coba di sini!

Nonaktifkan peringatan untuk output yang ditentukan

Biru
sumber
2

C #, 266 263 262 261 245 238 235 232 byte

Golf:

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

Tidak dikoleksi dengan komentar:

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

Cobalah: http://rextester.com/WIL67940

Mengembalikan daftar string. Setiap string berisi satu garis output.

Saya melakukan itu untuk kesenangan dan pelatihan. Saya menyadari bahwa memenangkan salah satu kode-golf dengan C # berada di luar jangkauan.

EDIT1: Mengubah interpolasi string ke +operator.

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

EDIT3: Ditukar chardengan var.

EDIT4: Mengubah tipe pengembalian dari voidmenjadi List.

EDIT5: Penghapusan variabel yang tidak perlu.

EDIT6: Cara baru untuk memisahkan separuh garis.

EDIT7: @ Kaspar Kjeldsen, terima kasih.

paldir
sumber
1
Anda dapat memotong karakter dengan mengganti string h = ""; dengan var h = "";
Kaspar Kjeldsen
@KasparKjeldsen Saya tidak percaya saya menghilangkannya.
paldir
1
Masih bisa lebih pendek! rextester.com/JLUL92950 string [] F (int n) {int i = 0; var q = 2 * n-1; var l = string baru [q]; untuk (; i <n; i ++) {var h = ""; untuk (var c = 'A'; c <'B' + i; c ++) h + = "" + c; l [qi-1] = l [i] = string baru ('', (n- i + 1) * 2) + h + "" + string.Compat (h.Hapus (i * 2). Balikkan ());} kembalikan l;}
Kaspar Kjeldsen
2

C, 124 123 byte

Menyimpan 1 byte berkat Mukul Kumar

Saat ini saya tidak bisa mendapatkan kepala saya untuk mengubah loop ganda menjadi satu, akan membiarkannya seperti ini untuk saat ini. Sebenarnya ini lebih besar

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

Jadi saya hanya membiarkan loop bersarang.

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

Menggunakan norma Manhattan untuk mendapatkan bentuk berlian.

Tidak Disatukan:

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)
  );
 }
}
Karl Napf
sumber
Anda dapat mengurangi satu byte dengan mengganti j==2*ndengan j-2*ndan bertukar ? ()nilai-nilai dengan :()nilai
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,' '))

Ini adalah posting pertama saya, jadi lembutlah! Saya menggunakan [:: - 1] untuk membalik string, jadi mungkin ada beberapa optimasi yang bisa didapat di sana. Komentar diterima.

EDIT:

Terima kasih @Rod untuk penunjuk ke tautan bermanfaat ke topik golf kode Python dan juga untuk mengingatkan saya bahwa surat-surat memerlukan spasi di antara mereka. Juga terima kasih @wec untuk tips umum tentang menghilangkan spasi.

Jeremy Pedersen
sumber
Anda dapat menghapus spasi di kedua sisi operator Anda (misalnya `=` menjadi =), setelah koma, dan sebelum tanda kurung buka dalam pernyataan cetak. Indentasi python dapat berupa level apa saja asalkan konsisten, sehingga Anda dapat menyimpan 3 karakter dengan mem-independen pernyataan cetak Anda hanya satu ruang alih-alih empat. Itu adalah penghematan mudah yang bisa saya lihat.
Minggu
Selamat datang c:, kami memiliki topik yang bagus ini dengan banyak tip python (termasuk alternatif yang lebih pendek untuk menghasilkan alfabet). Juga karena Anda zhanya menggunakan satu kali, Anda tidak perlu menggunakan variabel, cukup taruh s*2-1langsung dalam centerfungsi. Hanya satu detail, output harus memiliki spasi di antara huruf-huruf, ' '.jointepat setelah cetakan sudah cukup (tetapi Anda perlu mengolahnya kembali s*2-1untuk mendapatkan nilai yang tepat).
Rod
juga, nilai awal default untuk rangedan untuk [:]adalah 0, jadi Anda tidak perlu menjelaskannya secara eksplisit
Rod
2

Brain-Flak, 630 + 3 = 633 byte

Ini membutuhkan -Abendera untuk berjalan

Cobalah secara Online

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

Ini bukan golf yang hebat tapi tantangan ini cukup sulit di Brain-Flak

Wisaya Gandum
sumber
1

Pyth, 23 byte

V+SQt_SQp*dy-QNt_pjd<GN

Cobalah online

Cameron McCluskie
sumber
1

TSQL, 261 byte

Permintaan satu baris - tanpa perulangan

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

Sayangnya biola memakan ruang pada awal garis output. Spasi akan ada di sana jika dijalankan di studio manajemen SQL Server

Biola

t-clausen.dk
sumber
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]*' ']}]}

Terima kasih untuk manatwork atas komentarnya.

GB
sumber
Jawaban pertama yang bagus. Untuk cara memperbaikinya, lihat Tips untuk bermain golf di Ruby . Pertama-tama, kernigh 's ujung mengenai fungsi. BTW, 0..n-10...n.
manatwork
1
Jika Anda membalik logika terner Anda dapat menggunakan karakter operator relasional tunggal: n>0?…:"".
manatwork
1
“Tantangan Anda adalah menulis program atau fungsi”. Lebih baik menjadikannya lambda anonim - yang dapat mengambil parameternya langsung sebagai integer.
manatwork
1

Di luar 93 , 175 byte

Cobalah online!

Mungkin tidak bermain golf dengan sangat baik. Baiklah. Ini cukup sulit dengan 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>#+ <

Semoga berhasil mencari tahu cara kerjanya! Saya hampir tidak tahu.

MildlyMilquetoast
sumber
Penggunaan modifikasi kode waktu berjalan yang bagus.
James Holderness
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);};

Seperti biasa, C # bukan bahasa golf, tapi saya lebih suka kode "dapat dibaca" lebih dari kode esoterik. Juga saya hanya melakukan ini untuk bersenang-senang :)

Ini adalah versi yang tidak diklik, sehingga Anda dapat dengan mudah memahami apa yang saya lakukan:

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

(Saya pikir ini bisa dioptimalkan banyak ..)

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

Tidak Disatukan:

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;
    }
}
Eugene
sumber
0

Java, 394 Bytes

Saya biasanya melakukan C #, tapi ada baiknya mencampurnya ...

Golf:

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

Tidak Disatukan:

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

Uji:

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 
Pete Arden
sumber
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

(Pembaruan: scan()untuk input; dilecehkan (x-1): 1 == x: 2-1.)

Tidak terlalu buruk untuk salah satu bahasa kata kunci dari tampilannya (karakter-karakter khusus itu akan selalu menjadi lebih baik).

Jonathan Carroll
sumber
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";

apakah ada cara yang lebih pendek?

Titus
sumber
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`

Dimana \nmewakili karakter baris baru literal. Output dalam huruf kecil.

Neil
sumber
0

Batch, 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%

Jalur 2 berakhir dalam 25 spasi; ini berarti bahwa ketika indeks alfabet menjadi negatif, kuadrat tersebut tetap kosong.

Neil
sumber