Verwirrendes Alphabet-Treppenhaus

25

Wenn keine Eingabe erfolgt, geben Sie dieses interessante Alphabetmuster in beiden Fällen (der Fall muss konsistent sein) über eine akzeptierte Ausgabemethode aus :

EIN
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

Trailing Spaces und Newlines sind akzeptabel, Standard-Loopholes sind nicht erlaubt und das ist zufällig , also gewinnt die kürzeste Antwort in Bytes!

FantaC
quelle
Related , Related
FantaC
Übrigens, wenn ich eine erstaunliche Antwort sehe, werde ich sie mit 50
Wiederholungen belohnen
13
Die Führung A
bringt
2
Manche Leute mögen solche Herausforderungen einfach nicht, denke ich.
Jonathan Allan
1
@ETHproductions Es vereinfacht die Dinge für mich!
Neil

Antworten:

5

Canvas , 7 Bytes

Z[K*¹+]

Probieren Sie es hier aus!

Erläuterung:

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
quelle
Warum haben Sie Ihre vorherige Antwort nicht bearbeitet?
Neil
@Neil gute Frage. Nicht sicher
dzaima
Akzeptiert! Du hast Jelly und Charcoal um zwei Bytes geschlagen!
FantaC
8

Gelee , 9 Bytes

ØAjṪ$Ƥż¹Y

Probieren Sie es online!

Wie es funktioniert

Ø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
quelle
2
Oh, haha ​​und ich wollten gerade schreiben ØAjṪ$ƤżØAY: D
Jonathan Allan
6

R , 50 Bytes

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

Probieren Sie es online!

Vielleicht ist der klügste Teil hier die Verwendung letters[0]der leeren Zeichenfolge, um cat(character(0),'\n',sep="A")die erste Zeile zu drucken.

Giuseppe
quelle
6

Kohle , 9 Bytes

Eα⁺⪫…ακιι

Probieren Sie es online! Link ist eine ausführliche Version des Codes. Erläuterung:

 α          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
quelle
4

6502 Maschinencode- Routine (C64), 39 Bytes

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

Positionsunabhängiges Maschinencode-Unterprogramm, Clobber A, X und Y.

Online-Demo

Die Demo wird um geladen $C000, verwenden Sie also SYS49152, um die Routine aufzurufen.


Kommentierte Demontage:

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
quelle
3

Java 8, 93 91 90 Bytes

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

-1 Byte dank @ OlivierGrégoire durch direktes Drucken statt Zurücksenden

Erläuterung:

Probieren Sie es online aus.

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
quelle
2
90 Bytes (nur mit stdout anstatt zurückzukehren).
Olivier Grégoire
Gute Antwort! Ich portierte auf C #, um zu sehen, ob es kürzer war und ich 91 (mehr, wenn ich einschließe System.) :)
Aloisdg sagt Reinstate Monica
3

SNOBOL4 (CSNOBOL4) , 169 143 Bytes

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

Probieren Sie es 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

Das Problem ist hier die erste Zeile

using o s kfügt sam Anfang jeder Zeile ein zusätzliches Trennzeichen hinzu und hat auch kein sam Ende. Dies ist in Ordnung, da die Zeile tin diesem Fall über die folgenden beiden Zeilen springt x=0. Dies bedeutet, dass oimmer noch leer ist. Daher o s =wird das erste sZeichen aus entfernt o, und dann können wir einfach drucken o s, um das entsprechende letzte zu haben s.

Giuseppe
quelle
2

JavaScript (ES6), 81 Byte

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

Sparen Sie 9 Bytes, wenn ein Rückgabewert für ein String-Array akzeptabel ist.

Neil
quelle
2

Japt ( -Rflag), 14 12 Bytes

-2 Bytes dank @Shaggy

;B¬
ËiU¯E qD

Online testen!

ETHproductions
quelle
Wenn es nur eine Abkürzung für gäbe s0,! ; p
Shaggy
12 Bytes . Aber warum zählst du das -Rhier nicht?
Shaggy
@ Shaggy Oh wow, ich wusste, dass mir etwas fehlt: P Der iTrick ist großartig, danke! Was die Flagge betrifft, scheint es einen neuen Konsens zu geben, dass jeder einzelne Aufruf eines Programms als separate Sprache betrachtet werden sollte. (was Japts Flaggensystem irgendwie betrügerisch erscheinen lässt ...)
ETHproductions
2

Haskell , 49 48 Bytes

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

Probieren Sie es online!

Edit: -1 Byte dank totalhuman!

Laikoni
quelle
2

PowerShell , 56 Byte

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

Probieren Sie es online!

Schleifen 65zu 89, wobei jede Iteration ein charArray 65mit der aktuellen Nummer erstellt $_, -joindieses Array dann zu einer Zeichenfolge mit dem nächsten Zeichen zusammengefügt und dieses Zeichen am Ende angehakt wird.

Ändern Sie die 89in eine andere ASCII-Zahl, um das Verhalten besser zu sehen.

AdmBorkBork
quelle
2

> <> , 44 34 Bytes

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

Probieren Sie es online!

> <> 44 Bytes

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

Probieren Sie es online!

Da ich einen anderen Weg zum Erzeugen der Ausgabe benutze, habe ich meine eigene> <> Antwort gepostet. Die andere> <> Antwort finden Sie hier.

Vielen Dank an Jo King für das Aufspüren. Ich musste nicht immer "A" auf den Stapel legen, wenn ich nur mit "Z" anstatt mit 26 verglichen habe. (-10 Bytes)

Erläuterung

Die Erklärung folgt dem Ablauf des Codes.

"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. 
Blaugrüner Pelikan
quelle
36 Bytes . Ihre Methode ist viel besser als meine
Jo King
inb4 "durchgestrichen 44 noch 44; ("
Jo König
@JoKing Ausgezeichneter Platz im Vergleich zu Z. Ich habe nur die Linienlogik verschoben und das Z in die Mitte der Stapelelemente gesetzt, um mit diesen Anführungszeichen wieder zu sparen.
Teal Pelican
1

Gelee , 12 Bytes

ØA;\;€Ṫ$€YFḊ

Probieren Sie es online!

Bah hat gerade ØAjṪ$ƤżØAYwas ist ein Schritt zwischen diesem und der bereits veröffentlichten Lösung von Dennis: /

Jonathan Allan
quelle
1

Pyth , 13 Bytes

+\ajmPjedd._G

Probieren Sie es hier aus! , Alternative

Das führt azwar ...

Mr. Xcoder
quelle
1
Guten Morgen: p
Jonathan Allan
@ JonathanAllan Morgen bro: p Sie und Ihre Insider-Witze!
Mr. Xcoder
1

Gelee , 13 Bytes

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

Probieren Sie es online!

Erläuterung

Ø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

Teilweise missbraucht Jelly die Art und Weise, wie sich Strings und Charakterlisten unterscheiden

HyperNeutrino
quelle
Das war schnell!
FantaC
@tfbninja ehhh, 11 Minuten ist in Ordnung für Jelly. danke aber: P
HyperNeutrino
Sie können Ihre Sekunde ersetzen ØAdurch ¹(wie Dennis)
Jonathan Allan
@ JonathanAllan oh cool, danke!
HyperNeutrino
1

APL + WIN, 51 Bytes

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

Erläuterung:

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
quelle
1

> <> 47 Bytes

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

Probieren Sie es online!

Wie es funktioniert:

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
Scherzen
quelle
1

Acc !!84 Bytes

Das hat diese Herausforderung inspiriert:

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

Probieren Sie es online!

FantaC
quelle
1

GNU M4, 119 Bytes

Das schlimmste bisher. Nun, die Zeit ist schon vergangen ...

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)
Thriller
quelle
1

Schale , 13 Bytes

Γ·:mhSzJḣ…"AZ

Probieren Sie es online!

Erläuterung

Diese Führung Abringt die Dinge durcheinander -.-

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

C # (.NET Core)

Port von Kevin Cruijssens Antwort :

91 90 Bytes

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

Probieren Sie es online!

132 122 110 109 104 103 Bytes

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

Probieren Sie es online!

  • Ersetzen Sie ()durch _, um anzuzeigen , dass wir eine nicht verwendete Variable deklarieren. Vielen Dank, Kevin Cruijssen.
aloisdg sagt Reinstate Monica
quelle
Sie können es auch auf 90 Byte reduzieren, indem Sie einen leeren, nicht verwendeten Parameter verwenden, wie ich es in meiner Java-Antwort getan habe. Also o=>{...}statt ()=>{...}. Versuchen Sie es online: 90 Bytes .
Kevin Cruijssen
@ KevinCruijssen wusste ich nicht! Vielen Dank!
Aloisdg sagt Reinstate Monica
@KevinCruijssen Ich habe diesen Tipp zu Tips for Code-
Golfing
1

Jelly , 22 Bytes

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

Probieren Sie es online!

Wie es funktioniert:

                       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
quelle
1

uBASIC , 80 Bytes

Anonyme Funktion, die keine Ein- und Ausgaben an die Konsole nimmt

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

Probieren Sie es online!

Taylor Scott
quelle
1

Visual Basic .NET (Mono) , 134 Byte

Deklarierte Funktion, die keine Ein- und Ausgänge zur Konsole nimmt

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

Probieren Sie es online!

Taylor Scott
quelle