Cầu thang bảng chữ cái khó hiểu


25

Không có đầu vào, xuất mẫu bảng chữ cái thú vị này trong cả hai trường hợp (trường hợp phải nhất quán) thông qua phương thức đầu ra được chấp nhận :

Một
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

Không gian lưu trữ và dòng mới được chấp nhận, các sơ hở tiêu chuẩn không được phép và điều này xảy ra là , vì vậy câu trả lời ngắn nhất trong byte sẽ thắng!



BTW nếu tôi thấy một câu trả lời tuyệt vời, tôi sẽ trả lại cho nó 50 rep
FantaC

13
Việc dẫn đầu Athực sự làm mọi thứ rối tung lên đối với tôi ...
Sản phẩm ETH

2
Một số người chỉ đơn giản là không thích những thử thách như tôi nghĩ.
Jonathan Allan

1
@ETHproductions Nó đơn giản hóa mọi thứ cho tôi!
Neil

Câu trả lời:


5

Canvas , 7 byte

Z[K*¹+]

Hãy thử nó ở đây!

Giải trình:

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

Tại sao bạn không chỉnh sửa câu trả lời trước đó của bạn?
Neil

@Neil câu hỏi hay. Không chắc chắn
dzaima

Đã chấp nhận! Bạn đánh bại Jelly và Char than bằng hai byte!
FantaC

8

Thạch , 9 byte

ØAjṪ$Ƥż¹Y

Hãy thử trực tuyến!

Làm thế nào nó hoạt động

Ø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
Ồ, haha ​​và tôi vừa định đăng bài ØAjṪ$ƤżØAY: D
Jonathan Allan


6

R , 50 byte

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

Hãy thử trực tuyến!

Có lẽ phần thông minh nhất ở đây là sử dụng letters[0]cho chuỗi trống cat(character(0),'\n',sep="A")để in dòng đầu tiên.


6

Than , 9 byte

Eα⁺⪫…ακιι

Hãy thử trực tuyến! Liên kết là phiên bản dài dòng của mã. Giải trình:

 α          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

Thường trình mã máy 6502 (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

Chương trình con mã máy độc lập vị trí, ghi đè A, X và Y.

Bản demo trực tuyến

Bản demo tải tại $C000, vì vậy sử dụngSYS49152 để gọi các thường trình.


Nhận xét tháo gỡ:

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 byte

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

-1 byte nhờ @ OlivierGrégoire bằng cách in trực tiếp thay vì quay lại

Giải trình:

Hãy thử trực tuyến.

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 byte (chỉ sử dụng thiết bị xuất chuẩn thay vì trả về).
Olivier Grégoire

Câu trả lời tốt đẹp! Tôi đã chuyển đến C # để xem nó có ngắn hơn không và tôi nhận được 91 (nhiều hơn nếu tôi bao gồm System.) :)
aloisdg nói Phục hồi 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

Hãy thử trực tuyến!

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

Vấn đề ở đây là dòng đầu tiên

bằng cách sử dụng o s ksẽ thêm một ský tự eparator bổ sung ở đầu mỗi dòng và cũng không có ký tự sở cuối. Điều này là ổn vì dòng tsẽ nhảy qua hai dòng sau x=0. Điều này có nghĩa là ovẫn sẽ trống. Do đó, o s =sẽ xóa ský tự đầu tiên khỏi o, và sau đó chúng ta có thể ino s để có ký tự cuối cùng phù hợp s.


2

JavaScript (ES6), 81 byte

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

Lưu 9 byte nếu giá trị trả về mảng chuỗi được chấp nhận.


2

Japt ( -Rcờ), 14 12 byte

-2 byte nhờ @Shaggy

;B¬
ËiU¯E qD

Kiểm tra nó trực tuyến!


Nếu chỉ có một lối tắt cho s0,! ; p
Xù xì

12 byte . Nhưng tại sao bạn không đếm -Rở đây?
Xù xì

@Shaggy Oh wow, tôi biết tôi đã bỏ lỡ điều gì đó: P Thủ ithuật rất hay, cảm ơn! Đối với cờ, dường như có một sự đồng thuận mới rằng mỗi lần gọi chương trình duy nhất nên được coi là một ngôn ngữ riêng. (điều này làm cho hệ thống cờ của Japt có vẻ gian lận ...)
Sản phẩm ETH


2

PowerShell , 56 byte

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

Hãy thử trực tuyến!

Vòng lặp 65đến 89, mỗi lần lặp xây dựng một charmảng của 65số hiện tại $_, sau đó-join kết hợp mảng đó thành một chuỗi với ký tự tiếp theo, sau đó xử lý ký tự đó ở cuối.

Thay đổi 89thành một số số ASCII khác để xem hành vi tốt hơn.


2

> <> , 44 34 byte

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

Hãy thử trực tuyến!

> <> , 44 byte

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

Hãy thử trực tuyến!

Khi tôi sử dụng một tuyến đường khác để tạo đầu ra, tôi đã đăng câu trả lời của riêng mình> <>; Câu trả lời khác> <> có thể được tìm thấy ở đây.

Cảm ơn rất nhiều đến vua Jo vì đã phát hiện ra tôi không cần phải đặt "A" lên ngăn xếp nếu tôi chỉ so sánh với "Z" thay vì 26. (-10 byte)

Giải trình

Việc giải thích sẽ theo dòng chảy của mã.

"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 byte . Phương pháp của bạn tốt hơn nhiều so với tôi
Jo King

inb4 "gạch bỏ 44 vẫn là 44; ("
Jo King

@JoKing Điểm tuyệt vời khi so sánh với Z, chỉ có cải tiến tôi thực hiện là di chuyển logic dòng và đặt Z ở giữa các mục ngăn xếp để lưu lại bằng cách sử dụng các dấu ngoặc kép đó.
Teal bồ nông



1

Thạch , 13 byte

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

Hãy thử trực tuyến!

Giải trình

Ø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

lạm dụng một phần cách các chuỗi và danh sách ký tự khác nhau trong Jelly


Nó thật nhanh!
FantaC

@tfbninja ehhh, 11 phút là ok cho Jelly. cảm ơn mặc dù: P
HyperNeutrino

Bạn có thể thay thế lần thứ hai ØAbằng ¹(như của Dennis)
Jonathan Allan

@Jonathan ALLan ôi tuyệt, cảm ơn!
HyperNeutrino


1

APL + THẮNG, 51 byte

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

Giải trình:

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

1

> <> , 47 byte

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

Hãy thử trực tuyến!

Làm thế nào nó hoạt động:

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

GNU M4, 119 byte

Điều tồi tệ nhất cho đến nay. Chà, đã hết thời gian rồi

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)

1

Husk , 13 byte

Γ·:mhSzJḣ…"AZ

Hãy thử trực tuyến!

Giải trình

Điều này dẫn đầu Athực sự làm rối tung mọi thứ -.-

          "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 # (Lõi .NET)

Cổng từ câu trả lời của Kevin Cruijssen :

91 90 byte

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

Hãy thử trực tuyến!

132 122 110 109 104 103 byte

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

Hãy thử trực tuyến!

  • Thay thế ()bằng _để hiển thị rằng chúng tôi khai báo một biến không sử dụng. Cảm ơn Kevin Cruijssen.

Bạn cũng có thể giảm nó xuống 90 byte bằng cách sử dụng một tham số không sử dụng trống như tôi đã làm trong câu trả lời Java của mình. Vì vậy, o=>{...}thay vì ()=>{...}. Dùng thử trực tuyến: 90 byte .
Kevin Cruijssen

@KevinCruijssen Tôi không biết! Cảm ơn bạn!
aloisdg nói Phục hồi lại

@KevinCruijssen Tôi đã thêm mẹo này vào Mẹo chơi golf trong C #
aloisdg nói Phục hồi lại

1

Thạch , 22 byte

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

Hãy thử trực tuyến!

Làm thế nào nó hoạt động:

                       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




Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.