Alfabe Piramidi Oluştur


19

Bugün mektuplardan bir piramit inşa edeceğiz! İlk 5 harf için örnek bir harf piramidi:

  1. İlk 5 harfi arasında, önce artan ve sonra azalan bir boşluk bırakarak yazın.

    A B C D E D C B A
    
  2. Yukarıdaki satırdaki ilk dört harf için aynı şeyi yapın, ancak iki ekstra önde gelen boşlukla:

      A B C D C B A
    A B C D E D C B A
    
  3. Son satır sadece 'A' olana kadar aynı adımı tekrarlayı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
    
  4. Yukarı çıkmak yerine 2. ve 3. adımları tekrarlayı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 
    

Aynı desen 26 karaktere kadar uzatılabilir. Zorluğunuz girdi olarak bir tamsayıyı alan ve karşılık gelen harf piramidini üreten bir program veya işlev yazmaktır. Büyük veya küçük harf kullanmayı seçebilirsiniz. Her zaman girişin bir tamsayı olacağını [1, 26]ve çıktının 2d dizesi için herhangi bir makul format olabileceğini varsayabilirsiniz . Örneğin, içinde yeni satırlar olan bir dize, bir karakter dizisi, bir dosyaya yazdırma, vb.

Aşağıda bazı örnek girişler / çıkışlar verilmiştir:

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

Her zaman olduğu gibi, bu böylece standart boşluklar geçerlidir ve bayt en kısa cevap kazanır!


3
İlgili - biraz farklı karakterlerle aynı meydan okuma, boşluk yok, girdi yok
Sp3000

1
@stewiegriffin Hayır, boşluklar her iki şekilde de orada olmalı.
DJMcMayhem

4
Bu sayfayı kaydırdığınızda 26 çıktı için temiz bir optik yanılsama oluşur.
kobaltduck

Yanıtlar:


7

Python, 184174169 bayt

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)

Düzenleme: @ nedla2004 sayesinde 5 bayt kaydedildi


Değiştirilebilecek iki şey görüyorum. 1.) gÜç satıra koyabilirsiniz . 2.) rangeBir değişkene atayın . Bunların her ikisini de burada görebilirsiniz . (Not: def f(x,y,z):Boşluk olmadan önce, fordöngüden önce bir sekme vardır
nedla2004

rangeDeğiştirebileceğiniz 3 s yok mu?
nedla2004

Sen çevirerek 4 bayt kaydedebilirsiniz R((a-i))içine R(a-i)ve R((a-i-1))içine R(a-i-1), senin yok?
L3viathan

forListe kavrama içinde döngülerden önce kaldırılabilecek 2 boşluk vardır .
Yytsi

Sonra işe yaramaz bir boşluk print.
Yytsi

6

05AB1E , 13 bayt

Kod:

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

Açıklama:

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 kodlamasını kullanır . Çevrimiçi deneyin!


Yani "merkezileştirilmiş" info.txt içinde bunun anlamıdır! Bu arada güzel bir çözüm.
Osable

@Onable Yep, ayrıca içinde yeni satırlar olan dizeler için de çalışır (sadece diziler yerine).
Adnan

5

MATL , 25 24 bayt

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

Çevrimiçi deneyin!

Daha uzun alternatifler:

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

açıklama

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

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

Çevrimiçi deneyin!

Bu varlık sona erdi yolu henüz bir açıklama göndermek için gitmiyorum bu yüzden, ben umduğu daha az Golfy. İnşallah önce biraz daha aşağı eritebilirim. Her zamanki gibi, burada bir 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 bayt

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

Sayıyı girdi olarak alır ve bir 2D karakter dizisi döndürür.

açıklama

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

Ayrıştırılmış test çantası

   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

Bunu girişle deneyelim 5 .

Test senaryoları

   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
Çıktıdaki boşlukların iyi olup olmadığından emin misiniz? Diğer tüm cevaplar bunu boşluklarla verir. Her durumda sordum (MATLAB'da bu da biraz daha kolaylaşacağından beri.)
Stewie Griffin

Bazı boşluklar eksik gibi görünüyor
DJMcMayhem

@DrMcMoylex Meydan okumayı yanlış okudum, harflerle bir 2D karakter dizisi döndürmenin yeterli olduğunu düşündüm. Bir düzeltme rn üzerinde çalışıyor
Conor O'Brien

4

Jöle , 13 bayt

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

TryItOnline!

Nasıl?

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 bayt

golfed:

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

Yorum yapılmamış

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

Deneyin: http://rextester.com/WIL67940

Dizelerin listesini döndürür. Her dize bir çıkış satırı içerir.

Bunu eğlence ve eğitim için yaptım. C # ile herhangi bir kod golf kazanmanın aralık dışında olduğunu anlıyorum.

EDIT1: Dize enterpolasyonu +operatöre değiştirildi.

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

EDIT3: charile değiştirildi var.

EDIT4: Dönüş türü olarak olarak voiddeğiştirildi List.

EDIT5: Gereksiz değişkenin kaldırılması.

EDIT6: Çizgi yarılarını ayırmanın yeni yolu.

EDIT7: @Kaspar Kjeldsen, teşekkür ederim.


1
H = "" dizesini değiştirerek bir karakteri tıraş edebilirsiniz; var h = "" ile;
Kaspar Kjeldsen

@KasparKjeldsen Bunu ihmal ettiğime inanamıyorum.
paldir

1
Daha da kısa olabilir! rextester.com/JLUL92950 dize [] F (int n) {int i = 0; var q = 2 * n-1; var l = yeni dize [q]; için (; i <n; i ++) {var h = ""; (var c = 'A'; c <'B' + i; c ++) h + = "" + c; l [qi-1] = l [i] = yeni dize ('', (n- i + 1) * 2) + h + "" + string.Concat (h.Remove (i * 2) .Reverse ());} return l;}
Kaspar Kjeldsen

2

C, 124 123 bayt

Mukul Kumar sayesinde 1 bayt tasarruf

Şu anda çift döngüyü tek bir döngüye dönüştürmek için başımı alamıyorum, şu an için böyle bırakacak. Aslında bu daha büyük

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

Bu yüzden iç içe döngüye izin verdim.

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

Manhattan normunu kullanırElmas şeklini almak .

Ungolfed:

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

Sen değiştirerek bir bayt azaltabilir j==2*nile j-2*nve alışverişi ? ()ile değerler :()değer
Mukul Kumar

2

Python, 158 154 140 139 bayt

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

Bu benim ilk yazım, bu yüzden nazik ol! Dizeleri tersine çevirmek için [:: - 1] 'i yoğun şekilde kullandım, bu yüzden orada olması gereken bazı optimizasyonlar olabilir. Yorumlarınızı bekliyoruz.

DÜZENLEMELER:

Python kodu golf konusuna yararlı bağlantıya işaretçi ve ayrıca harflerin aralarında boşluk olması gerektiğini hatırlattığınız için teşekkürler @Rod. Ayrıca boşlukları kaldırmayla ilgili genel ipuçları için @wec'e teşekkürler.


Operatörlerinizin her iki yanındaki boşlukları (ör. "=` Olur =), virgüllerden sonra ve print deyiminde açılış parantezinden önce kaldırabilirsiniz . Python girintisi tutarlı olduğu sürece herhangi bir seviye olabilir, bu nedenle yazdırma ifadenizi dört yerine yalnızca bir boşluktan bağımsız hale getirerek 3 karakter kaydedebilirsiniz. Bunlar görebildiğim kolay tasarruflar.
wec

Hoşgeldin c:, birçok güzel python ipucu içeren bu güzel konuya sahibiz (alfabeyi oluşturmak için daha kısa bir alternatif dahil). Ayrıca kullandığınız içinz sadece bir kez kullandığınız için, bir değişken kullanmanıza gerek yoktur, sadece s*2-1doğrudan centerişleve koyun . Sadece bir ayrıntı, çıktının harfler arasında boşluklar ' '.joinolması gerekir, baskıdan hemen sonra yeterli olmalıdır (ancak s*2-1doğru değeri elde etmek için yeniden çalışmanız gerekir ).
Rod

Ayrıca, değer başlangıç varsayılan rangeve için [:]olduğu 0açıkça koymak gerekir don böylece,
Çubuk

2

Brain-Flak, 630 + 3 = 633 bayt

Bu, -Abayrağın çalışmasını gerektirir

Çevrimiçi Deneyin

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

Bu harika bir golf değil ama Brain-Flak'ta bu meydan okuma oldukça zor



1

TSQL, 261 bayt

Tek satırlı sorgu - döngü yok

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

Ne yazık ki keman çıktı hatlarının başında boşlukları yiyor. SQL Server yönetim stüdyosunda yürütülürse boşluklar olacaktır

Vaktini boşa harcamak


1

Yakut, 137115100 84 bayt

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

Yorumlarınız için manatüre teşekkürler.


Güzel ilk cevap. İyileştirmenin yolları için Ruby'deki golf için ipuçlarına bir göz atın . Her şeyden önce, kernigh 'ın fonksiyonları ile ilgili. BTW, 0..n-10...n.
manatwork

1
Eğer üçlü mantığı ters Eğer tek bir karakter ilişkisel operatörünü kullanabilirsiniz: n>0?…:"".
manatwork

1
“Zorluğunuz bir program ya da işlev yazmak”. Daha iyi bir anonim lambda yapmak - parametresini doğrudan tamsayı olarak alabilir.
manatwork

1

Befunge 93 , 175 bayt

Çevrimiçi deneyin!

Muhtemelen çok iyi golf değil. Oh iyi. Befunge ile yeterince zordu:

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

Nasıl çalıştığını anlamak için iyi şanslar! Çok az biliyorum.


Çalışma zamanı kod modifikasyonunun güzel kullanımı.
James Holderness

1

C #, 199 bayt

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

Her zaman olduğu gibi, C # bir golf dili değildir, ancak "okunabilir" kodu ezoterik koddan çok daha fazla tercih ederim. Ayrıca bunu sadece eğlence için yaptım :)

İşte ungolfed versiyonu, böylece ne yaptığımı kolayca anlayabilirsiniz:

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

(Bence bu çok optimize edilebilir ..)


1

Java, 213 bayt

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

Ungolfed:

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 Bayt

Normalde C # yapıyorum, ama karıştırmak iyi ...

golfed:

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

Ungolfed:

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

Ölçek:

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 bayt

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

(Güncelleme: scan()giriş için; istismar (x-1): 1 == x: 2-1.)

Anahtar kelime dillerinden birinin görünüşüne göre çok perişan değil (bu özel karakterli diller her zaman daha iyi olacak).


0

PHP, 122 116 bayt

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

daha kısa bir yol var mı?


0

JavaScript (ES6), 121 bayt

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`

Burada \ngerçek satırsonu karakterini temsil eder. Küçük harf çıktılar.


0

Toplu, 269 bayt

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

Satır 2, 25 boşlukta biter; Bu, alfabe dizini negatif olduğunda bu karelerin boş kaldığı anlamına gelir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.