ตัวอักษรสามเหลี่ยมนัดอีกครั้ง


24

งาน

งานของคุณคือการพิมพ์ข้อความที่แน่นอนนี้:

A
BCD
EFGHI
JKLMNOP
QRSTUVWXY
ZABCDEFGHIJ
KLMNOPQRSTUVW
XYZABCDEFGHIJKL
MNOPQRSTUVWXYZABC
DEFGHIJKLMNOPQRSTUV
WXYZABCDEFGHIJKLMNOPQ
RSTUVWXYZABCDEFGHIJKLMN
OPQRSTUVWXYZABCDEFGHIJKLM
NOPQRSTUVWXYZABCDEFGHIJKLMN
OPQRSTUVWXYZABCDEFGHIJKLMNOPQ
RSTUVWXYZABCDEFGHIJKLMNOPQRSTUV
WXYZABCDEFGHIJKLMNOPQRSTUVWXYZABC
DEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKL
MNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVW
XYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJ
KLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXY
ZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOP
QRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHI
JKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCD
EFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZA
BCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ

รายละเอียด

  • คุณสามารถทำได้ด้วยตัวพิมพ์เล็กทั้งหมดแทนตัวพิมพ์ใหญ่ทั้งหมด
  • ขึ้นบรรทัดใหม่ที่ส่วนท้ายของสามเหลี่ยมที่ได้รับอนุญาต
  • ช่องว่างต่อท้ายหลังจากแต่ละบรรทัดได้รับอนุญาต
  • คุณต้องพิมพ์ไปที่ STDOUT แทนการส่งออกอาเรย์ของสตริง

เกณฑ์การให้คะแนน

นี่คือรหัสกอล์ฟโปรแกรมที่มีจำนวนไบต์ต่ำสุดที่ชนะ


1
"นัดหยุดงานอีกครั้ง" คุณหมายถึงอะไร? คุณมีความท้าทายอีกเช่นนี้หรือไม่?
haykam


1
ดูเหมือนว่าเราจะค่อนข้างท้าทายเล็กน้อยสำหรับตัวอักษร (อื่น ๆ )?
Rohan Jhunjhunwala

2
มันเป็นความท้าทายที่ดี แต่ฉันคิดว่าเราเอาชนะความท้าทายของตัวอักษรเหล่านี้ได้ดีกว่าไม่มีอะไรที่เป็นส่วนตัว
Rohan Jhunjhunwala

การค้นหาความท้าทายของตัวอักษรที่ตัวอักษรในตำแหน่งไม่สามารถคำนวณได้ด้วยการแสดงออกอย่างง่ายจากพิกัดที่เกี่ยวข้องกับmodฟังก์ชั่น อาจทำให้ตัวเองถ้าฉันมีเวลา
Weijun Zhou

คำตอบ:


39

เป็นกลุ่ม 29 ไบต์

:h<_↵↵↵y$ZZ26P0qqa↵♥βjllq25@q

ไหนหมายถึงสำคัญกลับปุ่ม Escape และβปุ่ม Backspace

ป้อนคำอธิบายรูปภาพที่นี่


3
คุณจะเอาชนะฉันไปที่คำตอบที่เป็นกลุ่มได้อย่างไร? Aargh +1 ต่อไปฉันไม่สามารถโหวตเป็นกลุ่มได้! :)
DJMcMayhem

7
ผมยังคิดว่าคุณควรจะใช้แทน และแทน βนั่นคือสิ่งที่ทำเครื่องหมาย Unicode เหล่านี้ขึ้นมา utf8icons.com/subsets/control-pictures
mbomb007

9

Python 2, 65 ไบต์

i=1
a=bytearray(range(65,91))*26
while a:print a[:i];a=a[i:];i+=2

1
ฉันได้เปลี่ยนส่วนหัวเพื่อหลาม 2 เพราะรหัสจะไม่ทำงานในหลาม 3.
รั่วนูน

7

เยลลี่ 10 ไบต์

26RḤ’RØAṁY

ลองออนไลน์!

มันทำงานอย่างไร

26RḤ’RØAṁY  Main link. No Arguments.

26          Set the return value to 26.
  R         Range; yield [1, 2, ..., 25, 26].
   Ḥ        Unhalve; yield [2, 4, ..., 50, 52].
    ’       Decrement; yield [1, 3, ..., 49, 51].
     R      Range; yield [[1], [1, 2, 3], ..., [1, ..., 49], [1, ..., 51]].
      ØA    Yield the uppercase alphabet.
        ṁ   Mold the alphabet as the array of ranges. This repeats the uppercase
            letters over an over again, until all integers in the range arrays
            have been replaced with letters.
         Y  Join, separating by linefeeds.

ตอนนี้ "Double" ถูกเรียกว่า "Unhalve" หรือไม่? นอกจากนี้เป็นสิ่งที่ดี !! [รอที่จะบอกว่าขอแสดงความยินดีกับตัวแทน 100k]
Erik the Outgolfer

มันเป็นเพียงตัวช่วยจำ Hจะลดลงครึ่งหนึ่งและเป็นค่าผกผัน ( unhalve )
เดนนิส

ฉันแค่คิดถึง/2หรือ*2ดังนั้นจึงเป็น "Halve" หรือ "Double" นั่นเป็นเหตุผลที่ฉันสับสน
Erik the Outgolfer


ด้วย 10 ไบต์:51Rm2RØAṁY
HyperNeutrino

7

VBA Excel (80 ไบต์, 1742 ไบต์)


Excel, 1742 ไบต์

แรงบันดาลใจจากคำตอบที่สร้างสรรค์ของ ugorenฉันสามารถหาสูตร Excel เพื่อสร้างรูปแบบตามที่แสดงใน OP

=MID(REPT("ABCDEFGHIJKLMNOPQRSTUVWXYZ",26),(ROW()-1)^2+1,2*ROW()-1)

วางสูตรนี้ในเซลล์ A1 แล้วลากไปทั่วช่วง A1: A26

ความยาวของสูตรคือ 67 ไบต์ แต่คุณต้องทำซ้ำ 26 ครั้งดังนั้นจึงเท่ากับ 67 * 26 = 1742 ไบต์ นี่คือผลลัพธ์:

ป้อนคำอธิบายรูปภาพที่นี่


Excel VBA, 80 ไบต์

ตอนนี้เป็นไปได้ที่เราจะรวม Excel กับ VBA เพื่อทำให้กระบวนการเป็นไปโดยอัตโนมัติและเพื่อประหยัดจำนวนไบต์ตั้งแต่ VBA ถูกสร้างขึ้นในแอปพลิเคชัน Microsoft Office ส่วนใหญ่รวมถึง Excel เขียนและเรียกใช้รหัสต่อไปนี้ในหน้าต่าง Immediate (ใช้คีย์ผสมCTRL+ Gเพื่อแสดงใน Visual Basic Editor):

[A1:A26]="=MID(REPT(""ABCDEFGHIJKLMNOPQRSTUVWXYZ"",26),(ROW()-1)^2+1,2*ROW()-1)"

โปรแกรมทำงานโดยการพิมพ์สูตร Excel ด้านบนเป็นช่วง A1: A26 น่าเสียดายที่ทั้ง Excel และ VBA ไม่มีตัวอักษรในตัว


ชื่อคอลัมน์มีลักษณะเหมือนตัวอักษรในตัวสำหรับฉัน ใช้ 26 คอลัมน์แรก
mbomb007

1
@ mbomb007 งั้นเหรอ? ฉันคิดว่ามันจะยากกว่าที่จะใช้มันแทนที่จะเป็นสตริง
Erik the Outgolfer

@EriktheGolfer งั้นเหรอ? จุดของฉันคือการที่มีเป็นตัวอักษรในตัว
mbomb007

1
@ mbomb007 คุณพูดว่า "ใช้ชื่อคอลัมน์ 26 ชื่อแรก" ซึ่งฉันเห็นว่าเป็น "ใช้ชื่อคอลัมน์ 26 ชื่อแรกแทนที่จะเป็นชื่อที่คุณใช้ในปัจจุบัน" นั่นคือเหตุผลที่ฉันตอบกลับ
Erik the Outgolfer

@EriktheGolfer มันเป็นคำแนะนำ Idk จำนวนไบต์ที่ต้องการ
mbomb007

5

Haskell, 67 ไบต์

_#53=[]
s#i=take i s:drop i s#(i+2)
mapM putStrLn$cycle['A'..'Z']#1

การเรียกซ้ำแบบง่าย ๆ ตลอดความยาวiของเส้น ในแต่ละขั้นตอนiตัวอักษรถัดไปจะถูกนำมาจากการซ้ำซ้อนไม่สิ้นสุดของตัวอักษร


4

Mathematica, 90 ไบต์

StringRiffle[Flatten[Alphabet[]&~Array~26]~Internal`PartitionRagged~Range[1,51,2],"
",""]&

ฟังก์ชั่นไม่ระบุชื่อ ไม่รับอินพุตและส่งคืนสตริงเป็นเอาต์พุต ยินดีต้อนรับคำแนะนำการเล่นกอล์ฟ ตัวอย่างของสิ่งที่Internal`PartitionRaggedทำ:

In[1]:= Internal`PartitionRagged[{2, 3, 5, 7, 11, 13}, {2, 3, 1}]               

Out[1]= {{2, 3}, {5, 7, 11}, {13}}

Mathematica มีรูปสามเหลี่ยมในตัวสำหรับตัวอักษร?
บัฟเฟอร์อ่านมากกว่า

4

C, 79 ไบต์

main(i,j){for(i=0,j=1;i<676;i++){putchar(i%26+65);if(j*j==i+1){puts("");j++;}}}

คำตอบแรกของฉันใน C \ o /

คำแนะนำการเล่นกอล์ฟเป็นมากกว่าการต้อนรับ


62:i;main(j){while(i<676)printf("\n%c"+(j*j^i++||!j++),i%26+65);}
xsot

@xsot ขอบคุณ แต่ฉันเกรงว่าจะไม่ได้รับอนุญาตให้ขึ้นบรรทัดใหม่
Leun Nun

1
แต่ไม่มีการขึ้นบรรทัดใหม่ชั้นนำ?
xsot

60:i;main(j){for(;j<27;j*j^++i||puts("",j++))putchar(i%26+65);}
xsot

@ กลไกฉันเดาว่าฉันควรโพสต์ไว้แล้ว
xsot

4

Brachylogขนาด 37 ไบต์

26~l<:1aLc~j[@A:I],L~@nw
=:2%1,.#@l?,

ลองออนไลน์!

คำอธิบาย

  • ภาคแสดงหลัก:

    26~l         Let there be a list of 26 elements
    <            This list is an ascending list of integers
    :1aL         Apply predicate 1 to that list ; the resulting list of strings is L
    c            Concatenate the list of strings into one big string
    ~j[@A:I],    That big string is the result of juxataposing the alphabet I times to itself
    L~@n         Create a string which when splitted on line breaks results in L
    w            Write that string to STDOUT
    
  • เพรดิเคต 1: ใช้เพื่อสร้างสตริงตัวแปรที่มีความยาวคี่

    =            Assign a value to the Input
    :2%1,        That value must be odd
    .#@l?,       Output is a string of length Input
    

ในที่สุดคุณก็ทำสิ่งท้าทายศิลปะ ASCII
Leaky Nun

@LeakyNun จะจัดว่าเป็นการจัดการสตริงมากกว่า ASCII art imo
Fatalize

ฉันควรจะเพิ่มเข้าไปในแท็กหรือไม่
Leun Nun

การใช้งานที่ดีของความจริงที่ว่าบรรทัดสุดท้ายเป็นเพียงบรรทัดเดียวที่ลงท้ายด้วยZซึ่งเป็นเพราะ26ไม่มีสี่เหลี่ยม
Leun Nun


3

JavaScript (ES6), 77 82 88

EcmaScript 6 ต้องการเพียงการบันทึก 1 ไบต์โดยใช้สตริงตัวอักษรเทมเพลตสำหรับการขึ้นบรรทัดใหม่

for(i=r=l=o='';l+52;r++||(r=l-=2,o+=`
`))o+=(i++%26+10).toString(36);alert(o)

น้อย golfed

for(i = r = l = o = '';
    l + 52;
    r++ || (r = l -= 2, o += `\n`))
  o += (i++ % 26 + 10).toString(36);
alert(o);

ทดสอบ

for(i=r=l=o='';l+52;r++||(r=l-=2,o+=`
`))o+=(i++%26+10).toString(36);alert(o)


\ o / คำตอบ ES6 ฉันสามารถเรียกใช้ในเบราว์เซอร์ของฉันได้
Downgoat

ฉันขโมยตรรกะ. toString (36) ของคุณ ... ตอนนี้คุณต้องเอาชนะ 80 ไบต์ !!
applejacks01

อ่าฉันยอมรับฉันไม่สามารถคิดวิธีที่จะเอาชนะสิ่งนี้ด้วยห้องสมุดของฉัน ขอบคุณสำหรับความท้าทาย!
applejacks01

3

Perl, 42 41 39 ไบต์

perl -E '@b=(A..Z)x26;say splice@b,0,$#a+=2for@b'

เพียงแค่รหัส:

@b=(A..Z)x26;say splice@b,0,$#a+=2for@b

รุ่นที่สั้นกว่าเห็นได้ชัด แต่น่าเสียดายที่ก่อให้เกิดปัญหาภายใน perl (การใช้ค่าอิสระในการทำซ้ำ):

say splice@b,0,$#a+=2for@b=(A..Z)x26

2

จาวาสคริปต์, 129 ไบต์

z=1,i=0,g=a=>{b=0,c="";while(a+a-1>b){c+='ABCDEFGHIJKLMNOPQRSTUVWXYZ'.split``[i>26?i=0:i++];b++}console.log(c)};while(z<26)g(z++)

1
ใช้ประกอบการแพร่กระจายจะช่วยให้คุณประหยัด3 ไบต์ : แทน[...'ABCDEFGHIJKLMNOPQRSTUVWXYZ'] 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.split``
แทรกชื่อที่นี่



2

MATLAB, 112 109 95 79 77 ไบต์

นี้จะทำงานร่วมกับคู่คุณสามารถลองออนไลน์ได้ที่นี่

a=['' 65:90 65:90]';j=0;for i=1:2:52;b=circshift(a,j);j=j-i;disp(b(1:i)');end

ดังนั้นหลังจากการเปลี่ยนแปลงครั้งสำคัญฉันได้บันทึกอีก14 32 ไบต์ อันนี้จะมากขึ้นเหมือนกับความยาวที่ฉันคาดหวังจาก MATLAB ฉันออกจากรุ่นเก่าด้านล่างเนื่องจากแตกต่างอย่างมาก

a=['' 65:90 65:90]';        %Create 2 copies of the upper case alphabet
j=0;                        %Initialise cumulative sum
for i=1:2:52;               %For each line length
    b=circshift(a,j);       %Rotate the alphabet string by the cumulative offset
    j=j-i;                  %Update cumulative negative sum of offsets.
    disp(
         b(1:i)'            %Extract first 'line length' characters from rotated alphabet.
               );           %Display next line (disp adds newline automatically)
end

รุ่นเดิม:

a=['' repmat(65:90,1,26)];c=cumsum(1:2:51);disp(cell2mat(arrayfun(@(s,f)[a(s:f) 10],[1,c(1:25)+1],c,'Un',0)))

ว้าวที่หนึ่งจบลงด้วยการเป็นนานกว่าที่ฉันคิดว่ามันจะ ฉันจะดูว่าฉันไม่สามารถเคาะออกไม่กี่ไบต์

เวอร์ชันที่ไม่ดีที่จะอธิบาย:

a=['' repmat(65:90,1,26)]; %Create 26 copies of the upper case alphabet
c=cumsum(1:2:51);          %Calculate the end index of each row in the above array, by cumulatively summing the length of each line
disp(
     cell2mat(
              arrayfun(@(s,f)
                             [a(s:f) 10], %Extract the part of the alphabet and insert a new line.
                                         [1,c(1:25)+1],c, %start index is the previous end of line plus 1. End index is as calculated by cumsum.
                       'Un',0 %The returned values are not all the same length
                       )   %Do this for each line
              )            %Convert back to a matrix now new lines inserted
     )                     %And display it

กิตติกรรมประกาศ

  • บันทึกแล้ว 3 ไบต์ - ขอบคุณ @LuisMendo

2

XPath 3.0 (และ XQuery 3.0), 84 ไบต์

codepoints-to-string((0 to 25)!(subsequence(((1 to 26)!(65 to 90)),.*.+1,2*.+1),10))

คำอธิบาย:

(1 to 26)!(65 to 90) คือตัวอักษร 26 ครั้ง

(0 to 25)!(subsequence(XX, start, len),10) ใช้เวลา 26 อนุกรมของเรื่องนี้แต่ละคนตามด้วยการขึ้นบรรทัดใหม่

subsequence(X, .*.+1, 2*.+1) ใช้ลำดับที่ต่อเนื่องกับตำแหน่งเริ่มต้นและความยาว: (1, 1), (2, 3), (5, 5), (10, 9) เป็นต้น

codepoints-to-string() เปลี่ยน codepoints Unicode เป็นอักขระ


ไชโย ฉันคิดว่าฉันรู้ว่า XQuery คืออะไร ปรากฎว่าฉันไม่มีความคิด
จอร์แดน

ฉันสงสัยว่าโพสต์มากมายที่นี่บอกคุณมากเกี่ยวกับภาษาที่พวกเขาเขียนขึ้น
Michael Kay


2

05AB1E (ทางเลือก) 15 ไบต์

A2×52µ¼D¾£,¾¼FÀ

ลองออนไลน์!

คำอธิบาย:

A2×              # push a string containing a-za-z
   52µ           # Loop the rest of the program until counter = 52
      ¼          # increment counter (it's 0 initially)
       D         # Duplicate the alpha string on the stack
        ¾£       # Replace alpha with alpha[0..counter]
          ,      # Pop the substring and print it
           ¾¼FÀ  # rotate the alpha string left counter++ times.

2

R, 120 115 111 111 bytes

v=c();for(i in 1:26){v=c(v,c(rep(LETTERS,26)[(sum((b=seq(1,51,2))[1:i-1])+1):sum(b[1:i])],"\n"))};cat(v,sep="")

Ungolfed:

a=rep(LETTERS,26)
b=seq(1,51,2)
v=vector()

for(i in 1:26)
    {
    v=c(v,c(a[(sum(b[1:i-1])+1):sum(b[1:i])],"\n"))
    }

cat(v,sep="")

โดยพื้นฐานแล้วbเวกเตอร์ของจำนวนคี่ระหว่าง1และ51จึงให้ความยาวของแต่ละบรรทัด เห็นได้ชัดว่าsumฟังก์ชั่นผลรวมตัวเลขของเวกเตอร์นี้และให้ดัชนีเริ่มต้นและสิ้นสุด

-5 ไบต์ขอบคุณ @plannapus!
-4 ไบต์ขอบคุณ @plannapus!


1
arf ขออภัยฉันไม่เห็นว่าก่อนหน้านี้ แต่เนื่องจากคุณใช้เพียงaครั้งเดียวเมื่อคุณไม่จำเป็นต้องกำหนดความหมายหมายความว่าคุณสามารถโกนไบต์อีกสองสาม: b=seq(1,51,2);v=c();for(i in 1:26){v=c(v,c(rep(LETTERS,26)[(sum(b[1:i-1])+1):sum(b[1:i])],"\n"))};cat(v,sep="")งาน
plannapus

@plannapus Silly me! ขอบคุณอีกครั้ง ! ฉันยังแบบบูรณาการb=seqเป็นส่วนหนึ่งในตัวหลักดังนั้นก็จะยิ่งน้อยอ่าน!
Frédéric

2

R, 81 73 65 63 ไบต์

forวิธีวนรอบอย่างง่าย ทำซ้ำตัวอักษร 26 (i^2-2*i+2):i^2ครั้งและห่วงผ่านช่วงดัชนีเลื่อนที่จะคำนวณโดยใช้

for(i in 1:26)cat(rep(LETTERS,26)[(i^2-2*i+2):i^2],"\n",sep="")


1

รุ่นที่ 123 ไบต์

@set s=
@for /l %%i in (1,2,51)do @call set s=%%s%%ABCDEFGHIJKLMNOPQRSTUVWXYZ&call echo %%s:~0,%%i%%&call set s=%%s:~%%i%%


1

REXX, 74 72 ไบต์

i=1;m=1;do 26;say substr(copies(xrange('A','Z'),26),i,m);i=i+m;m=m+2;end

Ungolfed:

i=1
m=1
do 26
  say substr(copies(xrange('A','Z'),26),i,m)
  i=i+m
  m=m+2
end

1

TSQL, 129 ไบต์

ใช้ MASTER ในตอนเริ่มต้นของสคริปต์เพื่อให้แน่ใจว่ามีการเรียกใช้แบบสอบถามในฐานข้อมูลหลักซึ่งเป็นค่าเริ่มต้นสำหรับผู้ใช้จำนวนมาก (ไม่นับจำนวนไบต์สำหรับสิ่งนั้น)

แข็งแรงเล่นกอล์ฟ:

USE MASTER

SELECT SUBSTRING(REPLICATE('ABCDEFGHIJKLMNOPQRSTUVWXYZ',26),number*number+1,number*2+1)FROM spt_values WHERE number<26and'P'=type

Ungolfed:

USE MASTER

SELECT SUBSTRING(REPLICATE('ABCDEFGHIJKLMNOPQRSTUVWXYZ',26),number*number+1,number*2+1)
FROM spt_values
WHERE number<26and'P'=type

ซอ

ซอสำหรับรุ่นเก่าโดยใช้เส้นทาง xml


1

PowerShell, 68 ไบต์

$a=-join(65..90|%{[char]$_})*26;26..1|%{$a=$a.Insert($_*$_,"`n")};$a

ส่วนก่อนเซมิโคลอนแรกสร้างสตริงที่มี 26 ตัวอักษรของตัวพิมพ์ใหญ่ ส่วนถัดไปฉีด linebreaks ที่ดัชนีของแต่ละหมายเลข (ทำงานย้อนกลับดังนั้นฉันไม่ต้องบัญชีสำหรับการขยับ) ในที่สุดท้ายที่สุด$aก็แค่ผลักตัวแปรสตริงนั้นไปยัง PowerShell ที่เทียบเท่าSTDOUTกัน


1

18 ไบต์หรือ 18 ตัวอักษร? หากต้องการเข้ารหัส 18 อักขระเหล่านี้เป็น 18 ไบต์คุณต้องมีการเข้ารหัสอักขระที่กำหนดเอง และเราสามารถบีบอัดโซลูชันใด ๆ ได้ถ้าเราเลือกการเข้ารหัสอักขระอย่างรอบคอบเพียงพอ
Michael Kay


คุณจะอธิบายเรื่องนี้หรือฉันจะ
อดัม

1

C, 60 ไบต์

i;main(j){for(;j<27;j*j^++i||puts("",j++))putchar(i%26+65);}

putsรับเพียงหนึ่งอาร์กิวเมนต์เท่านั้น (พฤติกรรมที่ไม่ได้กำหนดบางอย่างได้รับอนุญาตใน codegolf ตามปกติ แต่นี่ค่อนข้างไกลนอกถนนปกติ)
MM

@MM พฤติกรรมที่ไม่ได้กำหนดถูกใช้ประโยชน์ตลอดเวลา กฎก็คือการส่งมีผลตราบเท่าที่มันทำงานในคอมไพเลอร์บางส่วนมิฉะนั้นเราจะต้องออกกฎข้อยกเว้นรายการยาวอย่างชัดเจน รหัสนี้ทำงานเป็น gcc ดังนั้นมันจึงเป็นข้อมูลที่ถูกต้อง
xsot

1

C ++, 111 ไบต์

void a(){int c=65,i,j;for(i=0;i<26;i++){for(j=0;j<=2*i;j++){std::cout<<(char)c;c++;if(c==91)c=65;}std::cout<<'\n';}}

ลองแรกที่หนึ่งในเหล่านี้ ใช้ int "c" เพื่อบันทึกตัวอักษรที่ต้องการพิมพ์ในเวลาใดก็ตาม เมื่อ "c" ผ่าน 90 ('Z') มันจะถูกรีเซ็ตเป็น 65 ('A') พิมพ์ปิรามิดที่ใช้เป็นลูป


คำตอบที่ดี! คุณสามารถทำได้โดยif(c<92)c=65ถอดออกหนึ่งไบต์และคุณสามารถทำได้int a()แทนที่จะทำเช่นvoid a()นั้น แต่ฉันก็ไม่คิดบวกถ้ามันทำงานได้โดยไม่ต้องกลับมา นอกจากนั้นฉันคิดว่าคุณต้องรวม#include <iostream>จำนวนไบต์ของคุณด้วย
DJMcMayhem

ฉันเชื่อว่าคุณหมายถึงif(c>90)c=65แต่ขอบคุณสำหรับคำแนะนำมันเป็นความคิดที่ดี นอกจากนี้ฉันคิดว่าฉันจะรวมมันขอบคุณ
Limelier

1

PHP, 76 69 ไบต์

for(;$i<26&&$a.=join(range(A,Z));)echo substr($a,$i**2,1+2*$i++)."
";
  • สร้างตัวอักษร 26 ตัว (มากเกินพอ) และติดต่อพวกมันด้วยเงิน $ a
  • วนซ้ำสำหรับฉัน <26
  • แสดง $ a substring เริ่มต้น i ^ 2, สิ้นสุด 2 * i + 1
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.