บันไดตัวอักษรที่สับสน


25

เมื่อไม่มีอินพุตให้เอาท์พุตรูปแบบตัวอักษรที่น่าสนใจในทั้งสองกรณี (เคสต้องสอดคล้องกัน) ผ่านวิธีเอาต์พุตที่ยอมรับได้ :

A
AB
ACBC
ADBDCD
AEBECEDE
AFBFCFDFEF
AGBGCGDGEGFG
AHBHCHDHEHFHGH
AIBICIDIEIFIGIHI
AJBJCJDJEJFJGJHJIJ
AKBKCKDKEKFKGKHKIKJK
ALBLCLDLELFLGLHLILJLKL
AMBMCMDMEMFMGMHMIMJMKMLM
ANBNCNDNENFNGNHNINJNKNLNMN
AOBOCODOEOFOGOHOIOJOKOLOMONO
APBPCPDPEPFPGPHPIPJPKPLPMPNPOP
AQBQCQDQEQFQGQHQIQJQKQLQMQNQOQPQ
ARBRCRDRERFRGRHRIRJRKRLRMRNRORPRQR
ASBSCSDSESFSGSHSISJSKSLSMSNSOSPSQSRS
ATBTCTDTETFTGTHTITJTKTLTMTNTOTPTQTRTST
AUBUCUDUEUFUGUHUIUJUKULUMUNUOUPUQURUSUTU
AVBVCVDVEVFVGVHVIVJVKVLVMVNVOVPVQVRVSVTVUV
AWBWCWDWEWFWGWHWIWJWKWLWMWNWOWPWQWRWSWTWUWVW
AXBXCXDXEXFXGXHXIXJXKXLXMXNXOXPXQXRXSXTXUXVXWX
AYBYCYDYEYFYGYHYIYJYKYLYMYNYOYPYQYRYSYTYUYVYWYXY
AZBZCZDZEZFZGZHZIZJZKZLZMZNZOZPZQZRZSZTZUZVZWZXZYZ

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



BTW ถ้าฉันเห็นคำตอบที่น่าอัศจรรย์ฉันจะให้รางวัล 50 ตัวแทน
แฟนต้า

13
ผู้นำนำAสิ่งต่าง ๆ มายุ่งสำหรับฉัน ...
ETHproductions

2
ฉันคิดว่าบางคนไม่ชอบความท้าทายแบบนี้
Jonathan Allan

1
@ETHproductions มันช่วยลดความยุ่งยากสำหรับฉัน!
Neil

คำตอบ:


5

Canvas ขนาด 7 ไบต์

Z[K*¹+]

ลองที่นี่!

คำอธิบาย:

Z[     ] for each prefix of the uppercase alphabet
    K        pop off the last letter
     *       and join the rest of the string with that character
      ¹+     and append the current iterated character to it

ทำไมคุณไม่แก้ไขคำตอบก่อนหน้าของคุณ?
Neil

@Neil คำถามที่ดี ไม่แน่ใจ
dzaima

ได้รับการยืนยัน! คุณเอาชนะ Jelly และ Charcoal ได้สองไบต์!
FantaC

8

เยลลี่ขนาด 9 ไบต์

ØAjṪ$Ƥż¹Y

ลองออนไลน์!

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

ØAjṪ$Ƥż¹Y  Main link. No arguments.

ØA         Yield "ABCDEFGHIJKLMNOPQRSTUVWXYZ".
     Ƥ     Map the link to the left over all prefixes, i.e., ["A", "AB", ...].
    $        Combine the two links to the left into a chain.
   Ṫ           Tail; yield and remove the last letter of each prefix.
  j            Join the remainder, using that letter as separator.
      ż¹   Zip the resulting strings and the letters of the alphabet.
        Y  Separate the results by linefeeds.

2
โอ้ฮ่าฮ่าและฉันเพิ่งจะโพสต์ØAjṪ$ƤżØAY: D
โจนาธานอัลลัน



6

ถ่าน 9 ไบต์

Eα⁺⪫…ακιι

ลองออนไลน์! การเชื่อมโยงคือการใช้รหัสเวอร์ชันอย่างละเอียด คำอธิบาย:

 α          Predefined uppercase alphabet
E           Map over each character
    …ακ     Get current prefix of alphabet
   ⪫   ι    Join with current character
  ⁺     ι   Append current character
            Implicitly print on separate lines


4

รหัสประจำเครื่อง 6502 (C64), 39 ไบต์

A9 41 20 D2 FF AA A8 84 FB E4 FB B0 0B 8A 20 D2 FF 98 20 D2 FF E8 D0 F1 A9 0D
20 D2 FF A2 41 C0 5A F0 03 C8 D0 E1 60

รูทีนย่อยรหัสเครื่องที่เป็นอิสระต่อตำแหน่ง Clobbers A, X และ Y

การสาธิตออนไลน์

โหลดการสาธิตที่$C000ดังนั้นใช้SYS49152เพื่อเรียกรูทีน


ความคิดเห็นถอดแยกชิ้นส่วน:

A9 41       LDA #$41            ; 'A'
20 D2 FF    JSR $FFD2           ; Kernal CHROUT (output character)
AA          TAX                 ; copy to X (current pos)
A8          TAY                 ; copy to Y (current endpos)
  .outerloop:
84 FB       STY $FB             ; endpos to temporary
  .innerloop:
E4 FB       CPX $FB             ; compare pos with endpos
B0 0B       BCS .eol            ; reached -> do end of line
8A          TXA                 ; current pos to accu
20 D2 FF    JSR $FFD2           ; and output
98          TYA                 ; endpos to accu
20 D2 FF    JSR $FFD2           ; and output
E8          INX                 ; next character
D0 F1       BNE .innerloop      ; (repeat)
  .eol:
A9 0D       LDA #$0D            ; load newline
20 D2 FF    JSR $FFD2           ; and output
A2 41       LDX #$41            ; re-init current pos to 'A'
C0 5A       CPY #$5A            ; test endpos to 'Z'
F0 03       BEQ .done           ; done when 'Z' reached
C8          INY                 ; next endpos
D0 E1       BNE .outerloop      ; (repeat)
  .done:
60          RTS

3

Java 8, 93 91 90 ไบต์

v->{String t="";for(char c=64;++c<91;t+=c)System.out.println(t.join(c+"",t.split(""))+c);}

-1 ไบต์ด้วย@ OlivierGrégoireโดยการพิมพ์โดยตรงแทนที่จะส่งคืน

คำอธิบาย:

ลองออนไลน์

v->{                     // Method with empty unused parameter and String return-type
  String t="";           //  Temp-String, starting empty
  for(char c=64;++c<91;  //  Loop over the letters of the alphabet:
      t+=c)              //    After every iteration: append the letter to the temp-String
    System.out.println(  //   Print with trailing new-line:
       r.join(c+"",t.split(""))
                         //    The temp-String with the current letter as delimiter
       +c);}             //    + the current letter as trailing character 

2
90 ไบต์ (ใช้ stdout แทนที่จะส่งคืน)
Olivier Grégoire

คำตอบที่ดี! ฉันย้ายไปที่ C # เพื่อดูว่ามันสั้นกว่านี้หรือไม่และฉันได้ 91 (มากขึ้นถ้ารวมอยู่ด้วยSystem.) :)
aloisdg พูดว่า Reinstate Monica

3

SNOBOL4 (CSNOBOL4) , 169 143 ไบต์

i &ucase len(x) . r len(1) . s
 o =
 i =
t r len(i) len(1) . k :f(o)
 o =o s k
 i =i + 1 :(t)
o o s =
 output =o s
 x =lt(x,25) x + 1 :s(i)
end

ลองออนไลน์!

i &ucase len(x) . r len(1) . s	;* set r to the first x characters and s to the x+1th.
 o =				;* set o,i to empty string
 i =
t r len(i) len(1) . k :f(o)	;* set k to the ith letter of r. on failure (no match), go to o.
 o =o s k			;* concatenate o,s,k
 i =i + 1 :(t)			;* increment i, goto t
o o s =				;* remove the first occurrence of s (the first character for x>1, and nothing otherwise)
 output =o s			;* output o concatenated with s
 x =lt(x,25) x + 1 :s(i)	;* increment x, goto i if x<25.
end

ปัญหานี่คือบรรทัดแรก

การใช้o s kจะเพิ่มsอักขระพิเศษในตอนต้นของแต่ละบรรทัดและไม่มีอักขระที่sท้าย นี่คือโอเคเพราะเส้นจะกระโดดข้ามสองบรรทัดต่อไปเมื่อt x=0ซึ่งหมายความว่าoจะยังคงว่างเปล่า ดังนั้นo s =จะลบครั้งแรกที่sตัวละครoแล้วเราก็สามารถพิมพ์จะมีสุดท้ายที่เหมาะสมo ss



2

Japt ( -Rแฟล็ก ), 14 12 ไบต์

-2 ไบต์ต้องขอบคุณ @Shaggy

;B¬
ËiU¯E qD

ทดสอบออนไลน์!


ถ้าเพียง แต่มีทางลัดสำหรับs0,! ; p
Shaggy

12 ไบต์ แต่ทำไมคุณไม่นับที่-Rนี่?
ขนปุย

@Shaggy โอ้ว้าวฉันรู้ว่าฉันหายไปบางอย่าง: P iเคล็ดลับดีมากขอบคุณ! สำหรับแฟล็กดูเหมือนจะมีความเห็นใหม่ที่แต่ละคำร้องขอที่ไม่ซ้ำกันของโปรแกรมควรถูกพิจารณาเป็นภาษาแยกกัน (ซึ่งทำให้ระบบธงของ Japt ดูเหมือนจะเป็นคนขี้โกง ... )
ETHproductions


2

PowerShellขนาด 56 ไบต์

"A";65..89|%{([char[]](65..$_)-join[char]++$_)+[char]$_}

ลองออนไลน์!

ลูป65ไปที่89การวนซ้ำแต่ละครั้งสร้างcharอาเรย์ของ65จำนวนปัจจุบัน$_จากนั้น-joinเข้าแถวนั้นเข้าด้วยกันเป็นสตริงที่มีอักขระตัวถัดไป

เปลี่ยนเป็น89หมายเลข ASCII อื่น ๆ เพื่อดูการทำงานที่ดีขึ้น


2

> <> , 44 34 ไบต์

"BA"oao"ZA"\=?;1+40.
o1+:{::o}=?\:

ลองออนไลน์!

> <> , 44 ไบต์

"A"o10ao\55*=?;1+40.
1+:{:}=?\:"A"+o{:}"A"+o

ลองออนไลน์!

ในขณะที่ฉันใช้เส้นทางที่แตกต่างเพื่อผลิตผลลัพธ์ฉันโพสต์ของตัวเอง> <> answer คำตอบอื่น ๆ > <> อยู่ที่นี่

ต้องขอบคุณ Jo king อย่างมากสำหรับการจำฉันไม่จำเป็นต้องวาง "A" ลงบนสแต็กถ้าฉันเปรียบเทียบกับ "Z" แทน 26 (-10 bytes)

คำอธิบาย

คำอธิบายจะเป็นไปตามขั้นตอนของรหัส

"BA"                 : Push "BA" onto the stack;
                       [] -> [66, 65]
    oao              : Print the stack top then print a new line;
                       [66, 65] -> [66]
       "ZA"\         : Push "ZA" onto the stack then move down to line 2;
                       [66, 90, 65]
o          \:        : Duplicate the stack top then print
 1+:                 : Add one to the stack top then duplicate;
                       [66, 90, 65, 65]
    {::              : Shift the stack right 1 place then duplicate the stack top twice;
                       [90, 65, 65, 66, 66]
       o}            : Print the stack top then shift the stack left 1 place;
                       [66, 90, 65, 65, 66]
         =?\         : Comparison for equality on the top 2 stack items then move to line 1 if equal otherwise continue on line 2;
                       [66, 90, 65]
           \=?;      : Comparison for equality on the top 2 stack items then quit if equal else continue on line 1;
                       [66]
               1+    : Add 1 to the stack top;
                       [67]
                 40. : Move the code pointer to column 4 row 0 of the code box and continue execution of code. 

36 ไบต์ วิธีการของคุณดีกว่าของฉันมาก
โจคิง

inb4 "กากบาท 44 ยังคงเป็น 44; ("
Jo King

@JoKing จุดที่ยอดเยี่ยมเมื่อเทียบกับ Z การปรับปรุงเท่านั้นที่ฉันทำคือการย้ายลอจิกบรรทัดและวาง Z ไว้ตรงกลางของรายการสแต็กเพื่อบันทึกโดยใช้เครื่องหมายคำพูดเหล่านั้นอีกครั้ง
นกกระทุงนกเป็ดน้ำ



1

เยลลี่ขนาด 13 ไบต์

ØA¹Ƥ+"¹Ṗ€Yṭ”A

ลองออนไลน์!

คำอธิบาย

ØA¹Ƥ+"¹Ṗ€Yṭ”A  Main Link
ØA              Uppercase Alphabet
  ¹Ƥ            Prefixes
    +"¹         Doubly-vectorized addition to identity (uppercase alphabet) (gives lists of lists of strings)
       Ṗ€      a[:-1] of each (get rid of the double letters at the end)
         Y     Join on newlines
          ṭ”A  "A" + the result

การใช้ในทางที่ผิดสตริงและรายการตัวละครต่างกันใน Jelly


มันเร็วมาก!
FantaC

@tfbninja ehhh, 11 นาทีก็โอเคสำหรับเยลลี่ ขอบคุณแม้ว่า: P
HyperNeutrino

คุณสามารถแทนที่วินาทีของคุณØAด้วย¹(เช่น Dennis's)
Jonathan Allan

@JanathanAllan เยี่ยมมากขอบคุณ!
HyperNeutrino



1

> <> , 47 ไบต์

d2*:1-v
-&$:?!\$:&$:1
1-:?!v\69*-$1-:
+*88~< 1o

ลองออนไลน์!

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

d2*:1-v Initialise the stack with 26 (outer loop counter) and 26-1 (inner loop counter)
....
....
....

....
-&$:?!\$:&$:1 Repeatedly make copies of both counters
....          And decrement the inner loop counter
....          Go to third line when inner loop counter is 0

....            Add -54 to the stack (for the newline) and decrement the outer loop counter
....            Initialise the inner loop counter as outer-1
1-:?!v\69*-$1-: If the inner counter is 0, go to the fourth line, else back to the second.
....

....
....      
....      Transform numbers and -54s into letters and newlines by adding 64
+*88~< 1o Output each character until it runs out of stack and errors




1

Husk , 13 ไบต์

Γ·:mhSzJḣ…"AZ

ลองออนไลน์!

คำอธิบาย

สิ่งนี้นำไปสู่ความAยุ่งเหยิง - -

          "AZ  -- string literal: "AZ"
         …     -- fill gaps: "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
     S         -- with alphabet and
        ḣ      -- | alphabet rangified: ["A","AB","ABC",…,"AB……XYZ"]
      zJ       -- : zipWith join: ["A","ABB","ACBCC","ADBDCDD",…,"AZB……ZYZZ"]
Γ              -- pattern match (x:xs) with the following function (x is "A" and xs ["ABB","ACBCC",…,"A……ZYZZ"]
 · mh          -- | drop the last element of each element of xs: ["AB","ACBC",…,"A……ZYZ"]
  :            -- | cons (construct list): ["A","AB","ACBC",…,"A……ZYZ"]
               -- : strings are printed implicitly

1

C # (.NET Core)

พอร์ตจากคำตอบของ Kevin Cruijssen :

91 90 ไบต์

_=>{var t="";for(char c='@';++c<91;t+=c)Console.WriteLine(string.Join(c+"",t.Skip(0))+c);}

ลองออนไลน์!

132 122 110 109 104 103 ไบต์

_=>"ABCDEFGHIJKLMNOPQRSTUVWXYZ".Select((c,i)=>string.Join(""+c,"ABCDEFGHIJKLMNOPQRSTUVWXYZ".Take(i))+c)

ลองออนไลน์!

  • แทนที่()ด้วย_เพื่อแสดงว่าเราประกาศตัวแปรที่ไม่ได้ใช้ ขอบคุณเควินครุยเซอร์

คุณสามารถลดให้เหลือ 90 ไบต์ได้โดยใช้พารามิเตอร์ที่ไม่ได้ใช้ว่างเช่นที่ฉันทำในคำตอบ Java ของฉัน ดังนั้นแทนที่จะo=>{...} ลองมันออนไลน์: 90 ไบต์ ()=>{...}
Kevin Cruijssen

@KevinCruijssen ฉันไม่รู้! ขอขอบคุณ!
aloisdg พูดว่า Reinstate Monica

@KevinCruijssen ฉันได้เพิ่มเคล็ดลับนี้ไว้ในTips for code-golfing ใน C #
aloisdg พูดว่า Reinstate Monica

1

เยลลี่ , 22 ไบต์

ØAż€Ð€`F€µJ’Ḥ»1ż@¹ḣ/€Y

ลองออนไลน์!

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

                       take argument implicitly
ØA                     the uppercase alphabet
    Ѐ`                for C in the alphabet
  ż€                     appends C to every letter in the alphabet
       F€              flatten every sublist
          J            get indices
           ’           subtract 1
            Ḥ          and double
             »1        take max([n, 1])
         µ     ż@¹     interleave alphabet list and indices
                  ḣ/€  reduce on head() for each element
                     Y join on newline
                       implicitly output




โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.