สร้างพีระมิดตัวอักษร


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. ทำซ้ำขั้นตอนที่สองและสามลงไปแทนที่จะขึ้น:

            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

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

แก้ไข:บันทึก 5 ไบต์ด้วย @ nedla2004


ฉันเห็นสองสิ่งที่สามารถเปลี่ยนแปลงได้ 1. ) คุณสามารถใส่gสามบรรทัด 2. ) กำหนดให้rangeกับตัวแปร คุณสามารถมองเห็นทั้งสองคนนี้ที่นี่ (หมายเหตุ: ก่อนที่จะdef f(x,y,z):มีช่องว่างก่อนforลูปจะมีแท็บ
nedla2004

ไม่มี 3 ranges ที่คุณสามารถแทนที่ได้?
nedla2004

คุณสามารถบันทึก 4 ไบต์โดยการเปลี่ยนR((a-i))เป็นR(a-i)และR((a-i-1))เข้าไปR(a-i-1)ใช่ไหม?
L3viathan

มีช่องว่าง 2 ช่องที่สามารถลบออกได้ก่อนที่จะforวนซ้ำในรายการความเข้าใจ
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

@Oableable อ๋อมันยังใช้งานได้กับสตริงที่มีการขึ้นบรรทัดใหม่ในมัน (มากกว่าอาร์เรย์เท่านั้น)
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

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 ฉันอ่านความท้าทายผิดฉันคิดว่าการส่งคืนอักขระ 2 มิติด้วยตัวอักษรนั้นเพียงพอแล้ว กำลังแก้ไข 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

ส่งคืนรายการสตริง แต่ละสตริงมีหนึ่งเอาต์พุตบรรทัด

ฉันทำอย่างนั้นเพื่อความสนุกสนานและการฝึกอบรม ฉันรู้ว่าการชนะ code-golf ด้วย C # นั้นอยู่นอกขอบเขต

EDIT1: การแก้ไขการแก้ไขสตริงเป็น+ตัวดำเนินการ

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

edit3: สลับกับcharvar

EDIT4: เปลี่ยนประเภทการกลับมาจากไปvoidList

EDIT5: การลบตัวแปรที่ไม่จำเป็น

EDIT6: วิธีใหม่ของการแบ่งครึ่งบรรทัด

แก้ไข 7: @Kaspar Kjeldsen ขอบคุณ


1
คุณสามารถโกนอักขระได้โดยแทนที่สตริง h = ""; ด้วย var h = "";
Kaspar Kjeldsen

@KasparKjeldsen ฉันไม่อยากจะเชื่อเลยว่าฉันไม่ได้ทำเช่นนั้น
paldir

1
สามารถย่อให้สั้นลงได้! rextester.com/JLUL92950สตริง [] F (int n) {int i = 0; var q = 2 * n-1; var l = สตริงใหม่ [q]; สำหรับ (; i <n; i ++) {var h = ""; สำหรับ (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 ());} return l;}
Kaspar Kjeldsen

2

C, 124 123 ไบต์

ประหยัด 1 ไบต์ขอบคุณ Mukul Kumar

ในขณะนี้ไม่สามารถทำให้หัวของฉันเปลี่ยนลูปสองวงให้เป็นวงเดียวได้ จริงๆแล้วนี่มันใหญ่กว่า

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

ใช้บรรทัดฐานแมนฮัตตันเพื่อให้ได้รูปทรงเพชร

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

คุณสามารถลดหนึ่งไบต์โดยแทนที่j==2*nด้วยj-2*nและแลกเปลี่ยน? ()ค่าที่มี:()ค่า
Mukul Kumar

2

Python, 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] อย่างหนักเพื่อย้อนกลับสตริงดังนั้นอาจมีการเพิ่มประสิทธิภาพบางอย่างที่จะมี ยินดีต้อนรับความคิดเห็น

การแก้ไข:

ขอบคุณ @Rod สำหรับตัวชี้ไปยังลิงก์ที่มีประโยชน์ไปยังหัวข้อ Python code golf และสำหรับการเตือนฉันด้วยว่าตัวอักษรต้องการช่องว่างระหว่างพวกเขา ขอบคุณ @wec สำหรับเคล็ดลับทั่วไปเกี่ยวกับการลบช่องว่าง


คุณสามารถลบช่องว่างที่ด้านข้างของโอเปอเรเตอร์ของคุณ (เช่น `=` กลายเป็น=), หลังเครื่องหมายจุลภาคและหน้าวงเล็บเปิดในคำสั่งพิมพ์ การเยื้องของ Python สามารถเป็นระดับใดก็ได้ตราบเท่าที่มันสอดคล้องกันดังนั้นคุณสามารถบันทึก 3 ตัวอักษรโดยอิสระงบพิมพ์ของคุณเพียงหนึ่งช่องว่างแทนสี่ นี่คือการออมที่ง่ายที่ฉันเห็น
WEC

ยินดีต้อนรับค: เรามีหัวข้อที่น่าสนใจพร้อมเคล็ดลับหลามมากมาย (รวมถึงทางเลือกที่สั้นกว่าในการสร้างตัวอักษร) นอกจากนี้เนื่องจากคุณกำลังใช้zเพียงครั้งเดียวคุณไม่จำเป็นต้องใช้ตัวแปรเพียงแค่ใส่s*2-1โดยตรงในcenterฟังก์ชั่น เพียงหนึ่งรายละเอียดผลลัพธ์จะต้องมีช่องว่างระหว่างตัวอักษร' '.joinหลังจากพิมพ์ควรเพียงพอ (แต่คุณจำเป็นต้องทำงานซ้ำs*2-1เพื่อให้ได้ค่าที่ถูกต้อง)
ร็อด

นอกจากนี้ค่าเริ่มต้นเริ่มต้นสำหรับrangeและ[:]เป็น0ดังนั้นคุณไม่จำเป็นต้องใส่มันอย่างชัดเจน
Rod

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

ทับทิม, 137 115 100 84 ไบต์

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

ขอบคุณ manatwork สำหรับความคิดเห็น


คำตอบแรกที่ดี หาวิธีการปรับปรุงมันจะดูที่เคล็ดลับสำหรับการเล่นกอล์ฟในรูบี ก่อนอื่นเคล็ดลับของkernighเกี่ยวกับฟังก์ชั่น BTW, → 0..n-10...n
จัดการ

1
ถ้าคุณย้อนกลับตรรกะ ternary n>0?…:""คุณสามารถใช้ตัวอักษรตัวเดียวประกอบสัมพันธ์:
จัดการ

1
“ ความท้าทายของคุณคือการเขียนโปรแกรมหรือฟังก์ชั่น” ดีกว่าทำให้เป็นแลมบ์ดานิรนาม - ซึ่งสามารถใช้พารามิเตอร์เป็นจำนวนเต็มโดยตรง
จัดการ

1

Befunge 93 , 175 bytes

ลองออนไลน์!

อาจจะไม่ค่อยดีนักกอล์ฟ โอ้ดี นี่มันยากพอกับการชน

&: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 # ไม่ใช่ภาษากอล์ฟ แต่ฉันชอบรหัส "อ่าน" มากกว่ารหัสลับ นอกจากนี้ฉันเพิ่งทำเพื่อความสนุก :)

นี่เป็นเวอร์ชั่นที่ไม่ดีดังนั้นคุณสามารถเข้าใจสิ่งที่ฉันทำ:

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

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

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 ไบต์

ปกติฉันจะทำ 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;}

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

ทดสอบ:

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

JavaScript (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.