Tangga Alphabet yang Membingungkan

25

Diberikan tidak ada input, hasilkan pola alfabet yang menarik ini dalam kedua kasus (kasing harus konsisten) melalui metode keluaran yang diterima :

SEBUAH
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

Ruang tambahan dan baris baru dapat diterima, celah standar tidak diizinkan, dan ini merupakan , sehingga jawaban tersingkat dalam byte menang!

FantaC
sumber
Terkait , Terkait
FantaC
BTW jika saya melihat jawaban yang luar biasa saya akan memberikannya 50 rep
FantaC
13
Para pemimpin Abenar - benar mengacaukan segalanya bagiku ...
ETHproduksi
2
Beberapa orang tidak suka tantangan semacam ini, saya pikir.
Jonathan Allan
1
@ ETHproductions Ini menyederhanakan banyak hal untuk saya!
Neil

Jawaban:

5

Kanvas , 7 byte

Z[K*¹+]

Coba di sini!

Penjelasan:

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
dzaima
sumber
Mengapa Anda tidak mengedit jawaban Anda sebelumnya?
Neil
@Neil pertanyaan bagus. Tidak yakin
dzaima
Diterima! Anda mengalahkan Jelly dan Arang dengan dua byte!
FantaC
8

Jelly , 9 byte

ØAjṪ$Ƥż¹Y

Cobalah online!

Bagaimana itu bekerja

Ø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.
Dennis
sumber
2
Oh, haha ​​dan saya baru saja akan memposting ØAjṪ$ƤżØAY: D
Jonathan Allan
7

C, 82 byte

f(i,j){for(i=!puts("A");++i<26;puts(""))for(j=0;j++<i*2;)putchar(65+(j&1?j/2:i));}

Cobalah online!

Steadybox
sumber
6

R , 50 byte

l=LETTERS
for(i in 0:25)cat(l[0:i],"
",sep=l[i+1])

Cobalah online!

Mungkin bagian paling pintar di sini adalah menggunakan letters[0]untuk string kosong untuk bisa cat(character(0),'\n',sep="A")mencetak baris pertama.

Giuseppe
sumber
6

Arang , 9 byte

Eα⁺⪫…ακιι

Cobalah online! Tautan adalah untuk mengucapkan versi kode. Penjelasan:

 α          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
Neil
sumber
5

Python 2 , 56 byte

n=65;s='';exec'c=chr(n);print c.join(s)+c;s+=c;n+=1;'*26

Cobalah online!

Dennis
sumber
4

6502 rutin kode mesin (C64), 39 byte

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

Posisi-independen kode mesin subrutin, clobbers A, X dan Y.

Demo online

Demo dimuat di $C000, jadi gunakan SYS49152untuk memanggil rutin.


Komentar pembongkaran:

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
Felix Palmen
sumber
3

Java 8, 93 91 90 byte

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

-1 byte terima kasih kepada @ OlivierGrégoire dengan mencetak langsung alih-alih kembali

Penjelasan:

Cobalah online.

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 
Kevin Cruijssen
sumber
2
90 byte (hanya menggunakan stdout daripada mengembalikan).
Olivier Grégoire
Jawaban bagus! Saya porting ke C # untuk melihat apakah itu lebih pendek dan saya mendapatkan 91 (lebih jika saya sertakan System.) :)
aloisdg mengatakan Reinstate Monica
3

SNOBOL4 (CSNOBOL4) , 169 143 byte

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

Cobalah online!

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

Masalahnya di sini adalah baris pertama

menggunakan o s kakan menambahkan skarakter eparator tambahan di awal setiap baris dan juga tidak memiliki sdi akhir. Ini OK karena garis takan melompati dua baris berikut kapan x=0. Ini berarti omasih kosong. Karenanya, o s =akan menghapus skarakter pertama dari o, dan kemudian kita bisa mencetak o suntuk mendapatkan yang terakhir sesuai s.

Giuseppe
sumber
2

JavaScript (ES6), 81 byte

f=
_=>[..."ABCDEFGHIJKLMNOPQRSTUVWXYZ"].map((c,i,a)=>a.slice(0,i).join(c)+c).join`
`
;document.write('<pre>'+f());

Simpan 9 byte jika nilai pengembalian array string dapat diterima.

Neil
sumber
2

Japt ( -Rflag), 14 12 byte

-2 byte terima kasih kepada @Shaggy

;B¬
ËiU¯E qD

Uji secara online!

Produksi ETH
sumber
Kalau saja ada jalan pintas untuk s0,! ; p
Shaggy
12 byte . Tetapi mengapa Anda tidak menghitungnya di -Rsini?
Shaggy
@Shaggy Oh wow, saya tahu saya kehilangan sesuatu: P iTriknya bagus, terima kasih! Adapun bendera, tampaknya ada konsensus baru bahwa setiap doa yang unik dari suatu program harus dianggap sebagai bahasa yang terpisah. (yang membuat sistem bendera Japt tampak agak curang ...)
ETHproduk
2

Haskell , 49 48 byte

'A':unlines[init['A'..x]>>=(:[x])|x<-['A'..'Z']]

Cobalah online!

Sunting: -1 byte terima kasih untuk benar-benar manusia!

Laikoni
sumber
2

PowerShell , 56 byte

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

Cobalah online!

Loops 65to 89, setiap iterasi membangun chararray 65ke nomor saat ini $_, kemudian -joins array itu bersama-sama menjadi string dengan karakter berikutnya, lalu paku pada karakter itu di akhir.

Ubah 89ke nomor ASCII lainnya untuk melihat perilaku dengan lebih baik.

AdmBorkBork
sumber
2

> <> , 44 34 byte

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

Cobalah online!

> <> , 44 byte

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

Cobalah online!

Karena saya menggunakan rute berbeda untuk menghasilkan output, saya sudah memposting jawaban saya sendiri> <>; Jawaban lain> <> dapat ditemukan di sini.

Terima kasih banyak kepada Jo king karena telah menemukan saya tidak perlu terus memasukkan "A" ke tumpukan jika saya hanya membandingkannya dengan "Z" alih-alih 26. (-10 byte)

Penjelasan

Penjelasan akan mengikuti alur kode.

"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. 
Pelican teal
sumber
36 byte . Metode Anda jauh lebih baik daripada metode saya
Jo King
inb4 "dicoret 44 masih 44; ("
Jo King
@JoKing Tempat yang sangat baik dengan membandingkan ke Z, hanya perbaikan yang saya buat adalah memindahkan garis logika dan menempatkan Z di tengah tumpukan item untuk menghemat menggunakan tanda kutip itu lagi.
Teal pelican
1

Jelly , 12 byte

ØA;\;€Ṫ$€YFḊ

Cobalah online!

Bah baru saja mendapat ØAjṪ$ƤżØAYyang merupakan langkah antara ini dan solusi yang sudah diposting dari Dennis: /

Jonathan Allan
sumber
1

Pyth , 13 byte

+\ajmPjedd._G

Coba di sini!, Alternatif

Yang memimpin a...

Tuan Xcoder
sumber
1
Selamat pagi: p
Jonathan Allan
@JonathanAllan Pagi bro: p Anda dan lelucon Anda!
Tn. Xcoder
1

Jelly , 13 byte

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

Cobalah online!

Penjelasan

Ø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

sebagian menyalahgunakan cara string dan daftar karakter berbeda dalam Jelly

HyperNeutrino
sumber
Itu tadi cepat!
FantaC
@ tfbninja ehhh, 11 menit tidak masalah untuk Jelly. terima kasih: P
HyperNeutrino
Anda dapat mengganti yang kedua ØAdengan ¹(seperti milik Dennis)
Jonathan Allan
@ Jonathan Allan oh keren, terima kasih!
HyperNeutrino
1

APL + WIN, 51 byte

⍎∊'a←⎕av[65+⍳26]⋄a[n←1]',25⍴⊂'⋄,⊃a[⍳n-1],¨a[n←n+1]'

Penjelasan:

a←⎕av[65+⍳26] create a vector of upper case letters

a[n←1] first A

25⍴⊂'⋄,⊃a[⍳n-1],¨a[n←n+1]' create an implicit loop to concatenate subsequent letters
Graham
sumber
1

> <> , 47 byte

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

Cobalah online!

Bagaimana itu bekerja:

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
Jo King
sumber
1

Acc !! , 84 byte

Inilah yang sebenarnya menginspirasi tantangan ini:

Write 65
Count i while i-26 {
Count b while b-i {
Write b+65
Write i+65
}
Write 10
}

Cobalah online!

FantaC
sumber
1

GNU M4, 119 byte

Yang terburuk sejauh ini. Yah, waktu sudah dihabiskan ...

define(f,`ifelse($1,$2,,`format(%c%c,$1,$2)`'f(incr($1),$2)')')define(g,`f(65,$1)ifelse($1,90,,`
g(incr($1))')')A
g(66)
Film thriller
sumber
1

Sekam , 13 byte

Γ·:mhSzJḣ…"AZ

Cobalah online!

Penjelasan

APemimpin ini benar - benar mengacaukan segalanya -.-

          "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
ბიმო
sumber
1

C # (.NET Core)

Port dari jawaban Kevin Cruijssen :

91 90 byte

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

Cobalah online!

132 122 110 109 104 103 byte

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

Cobalah online!

  • Ganti ()dengan _untuk menunjukkan bahwa kami mendeklarasikan variabel yang tidak digunakan. Terima kasih Kevin Cruijssen.
aloisdg kata Reinstate Monica
sumber
Anda juga dapat menguranginya menjadi 90 byte dengan menggunakan parameter kosong yang tidak digunakan seperti yang saya lakukan pada jawaban Java saya. Jadi, o=>{...}bukannya ()=>{...}. Cobalah online: 90 byte .
Kevin Cruijssen
@KevinCruijssen Saya tidak tahu! Terima kasih!
aloisdg mengatakan Reinstate Monica
@KevinCruijssen Saya menambahkan tip ini ke Tips untuk kode-golf di C #
aloisdg mengatakan Reinstate Monica
1

Jelly , 22 byte

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

Cobalah online!

Bagaimana itu bekerja:

                       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
ellie
sumber
1

uBASIC , 80 byte

Fungsi anonim yang tidak mengambil input dan output ke konsol

0?"A":ForI=65To89:ForJ=65ToI:?Left$(Chr$(J),1)+Left$(Chr$(I+1),1);:NextJ:?:NextI

Cobalah online!

Taylor Scott
sumber
1

Visual Basic .NET (Mono) , 134 byte

Mendeklarasikan fungsi yang tidak mengambil input dan output ke konsol

Module M
Sub Main
Dim S,I,J
S="A"
For I=65To 90
Console.WriteLine(S)
S=""
For J=65To I
S+=Chr(J)+Chr(I+1)
Next
Next
End Sub
End Module

Cobalah online!

Taylor Scott
sumber
1

Ruby , 44 34 byte

?A.upto(?Z){|w|puts [*?A...w]*w+w}

Cobalah online!

Terima kasih benj2240 untuk menurunkannya ke 37 byte. Dan tentu saja dicoret 44 bla bla.

GB
sumber
Ini versi 37-byte
benj2240