Mylące schody alfabetu

25

Bez danych wejściowych wypisz interesujący wzór alfabetu w obu przypadkach (przypadek musi być spójny) za pomocą przyjętej metody wyjściowej :

ZA
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

Dopuszczalne są końcowe spacje i znaki nowej linii, standardowe luki są niedozwolone, a to jest , więc wygrywa najkrótsza odpowiedź w bajtach!

FantaC
źródło
BTW, jeśli zobaczę niesamowitą odpowiedź,
naliczę
13
Wiodącym Anaprawdę bałagan rzeczy dla mnie ...
ETHproductions
2
Myślę, że niektórzy ludzie po prostu nie lubią tego rodzaju wyzwań.
Jonathan Allan
1
@ETHproductions Upraszcza mi to!
Neil

Odpowiedzi:

5

Płótno , 7 bajtów

Z[K*¹+]

Wypróbuj tutaj!

Wyjaśnienie:

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
źródło
Dlaczego nie edytowałeś swojej poprzedniej odpowiedzi?
Neil,
@ Nee dobre pytanie. Nie jestem pewien
dzaima,
Przyjęty! Pokonałeś Galaretkę i Węgiel o dwa bajty!
FantaC
8

Galaretka , 9 bajtów

ØAjṪ$Ƥż¹Y

Wypróbuj online!

Jak to działa

Ø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
źródło
2
Och, haha ​​i ja właśnie zamierzaliśmy napisać ØAjṪ$ƤżØAY: D
Jonathan Allan
7

C, 82 bajty

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

Wypróbuj online!

Steadybox
źródło
6

R , 50 bajtów

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

Wypróbuj online!

Być może najmądrzejsza część tutaj używa letters[0]pustego łańcucha, cat(character(0),'\n',sep="A")aby wydrukować pierwszą linię.

Giuseppe
źródło
6

Węgiel , 9 bajtów

Eα⁺⪫…ακιι

Wypróbuj online! Link jest do pełnej wersji kodu. Wyjaśnienie:

 α          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
źródło
4

Procedura kodu maszynowego 6502 (C64), 39 bajtów

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

Niezależny od pozycji podprogram kodu maszynowego, zatrzaski A, X i Y.

Demo online

Demo ładuje się $C000, więc użyj, SYS49152aby wywołać procedurę.


Skomentowany demontaż:

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
źródło
3

Java 8, 93 91 90 bajtów

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

-1 bajt dzięki @ OlivierGrégoire , drukując bezpośrednio zamiast wracać

Wyjaśnienie:

Wypróbuj 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
źródło
2
90 bajtów (tylko użycie standardowego wyjścia zamiast powrotu).
Olivier Grégoire
Niezła odpowiedź! Przeniesiłem do C #, aby zobaczyć, czy był krótszy i dostaję 91 (więcej, jeśli uwzględnię System.) :)
aloisdg mówi Reinstate Monica
3

SNOBOL4 (CSNOBOL4) , 169 143 bajtów

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

Wypróbuj 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

Problemem jest tutaj pierwsza linia

użycie o s kdoda dodatkowy sznak eparatora na początku każdej linii, a także nie będzie miałs na końcu. Jest to OK, ponieważ tkiedy linia przeskoczy przez kolejne dwie linie x=0. Oznacza to, że onadal będzie puste. Dlatego o s =usunie pierwszy sznak o, a następnie możemy po prostu wydrukować, o saby mieć odpowiedni ostatni s.

Giuseppe
źródło
2

JavaScript (ES6), 81 bajtów

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

Zapisz 9 bajtów, jeśli dopuszczalna jest wartość zwracana przez tablicę łańcuchów.

Neil
źródło
2

Japt ( -Rflaga), 14 12 bajtów

-2 bajty dzięki @Shaggy

;B¬
ËiU¯E qD

Przetestuj online!

ETHprodukcje
źródło
Gdyby tylko istniał skrót s0,! ; p
Kudłaty
12 bajtów . Ale dlaczego nie liczysz -Rtutaj?
Shaggy
@Shaggy Oh wow, wiedziałem, że coś mi umknęło: P iSztuczka jest świetna, dzięki! Jeśli chodzi o flagę, wydaje się, że istnieje nowa zgoda co do tego, że każde unikalne wywołanie programu należy traktować jako odrębny język. (co sprawia, że ​​system flag Japt wydaje się trochę oszustem ...)
ETHproductions
2

Haskell , 49 48 bajtów

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

Wypróbuj online!

Edycja: -1 bajt dzięki całkowicie ludzki!

Laikoni
źródło
2

PowerShell , 56 bajtów

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

Wypróbuj online!

Pętle 65do 89, każda iteracja konstruuje chartablicę 65do bieżącej liczby $_, następnie -joinsczy tę tablicę razem w ciąg z następnym znakiem, a następnie skuwa na ten znak na końcu.

Zmień na 89inny numer ASCII, aby lepiej widzieć zachowanie.

AdmBorkBork
źródło
2

> <> , 44 34 bajtów

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

Wypróbuj online!

> <> , 44 bajty

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

Wypróbuj online!

Ponieważ używam innej drogi do stworzenia wyników, opublikowałem własną odpowiedź> <>; Inną odpowiedź> <> można znaleźć tutaj.

Ogromne podziękowania dla króla Jo za wykrycie nie musiałem ciągle umieszczać „A” na stosie, gdybym po prostu porównał z „Z” zamiast 26. (-10 bajtów)

Wyjaśnienie

Wyjaśnienie nastąpi po przepływie kodu.

"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. 
Pelikan turkusowy
źródło
36 bajtów . Twoja metoda jest znacznie lepsza niż moja
Jo King
inb4 "przekreślone 44 to wciąż 44; ("
Jo King
@JoKing Doskonałe miejsce w porównaniu do Z, jedyne ulepszenie, które wprowadziłem, to przesunięcie logiki linii i umieszczenie Z na środku stosu, aby zaoszczędzić używając tych znaków cudzysłowu.
Teal pelikan
1

Pyth , 13 bajtów

+\ajmPjedd._G

Wypróbuj tutaj! , Alternatywa

aAle to prowadzi …

Pan Xcoder
źródło
1
Dzień dobry: p
Jonathan Allan
@JonathanAllan Morning bro: p Ty i twoje żarty wewnętrzne!
Pan Xcoder
1

Galaretka , 13 bajtów

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

Wypróbuj online!

Wyjaśnienie

Ø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

częściowo narusza sposób, w jaki łańcuchy i listy znaków różnią się w galaretce

HyperNeutrino
źródło
To było szybkie!
FantaC
@ tfbninja ehhh, 11 minut jest w porządku dla galaretki. dzięki jednak: P
HyperNeutrino
Można wymienić drugi ØAz ¹(jak Dennis'S)
Jonathan Allan
@JonathanAllan oh cool, dzięki!
HyperNeutrino
1

APL + WIN, 51 bajtów

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

Wyjaśnienie:

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
źródło
1

> <> , 47 bajtów

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

Wypróbuj online!

Jak to działa:

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
źródło
1

Acc !! , 84 bajtów

Właśnie to zainspirowało to wyzwanie:

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

Wypróbuj online!

FantaC
źródło
1

GNU M4, 119 bajtów

Najgorsze jak dotąd. Cóż, czas już spędzony…

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)
Kryminał
źródło
1

Łuska , 13 bajtów

Γ·:mhSzJḣ…"AZ

Wypróbuj online!

Wyjaśnienie

To prowadzenie Anaprawdę popsuło rzeczy -. -

          "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
ბიმო
źródło
1

C # (.NET Core)

Port Kevin Cruijssen za odpowiedź :

91 90 bajtów

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

Wypróbuj online!

132 122 110 109 104 103 bajtów

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

Wypróbuj online!

  • Wymień ()się _pokazać, że możemy zadeklarować nieużywaną zmienną. Dziękuję Kevin Cruijssen.
aloisdg mówi Przywróć Monikę
źródło
Możesz także zmniejszyć go do 90 bajtów, używając pustego, nieużywanego parametru, tak jak w mojej odpowiedzi Java. Więc o=>{...}zamiast ()=>{...}. Wypróbuj online: 90 bajtów .
Kevin Cruijssen
@KevinCruijssen Nie wiedziałem! Dziękuję Ci!
aloisdg mówi Przywróć Monikę
@KevinCruijssen Dodałem tę wskazówkę do Porady dotyczące gry w kod w C #
aloisdg mówi Reinstate Monica
1

Galaretka , 22 bajty

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

Wypróbuj online!

Jak to działa:

                       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
źródło
1

uBASIC , 80 bajtów

Anonimowa funkcja, która nie pobiera danych wejściowych i wyjściowych do konsoli

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

Wypróbuj online!

Taylor Scott
źródło
1

Visual Basic .NET (mono) , 134 bajty

Zadeklarowana funkcja, która nie pobiera danych wejściowych i wyjściowych do konsoli

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

Wypróbuj online!

Taylor Scott
źródło