Escalier Alphabet déroutant

25

Si aucune entrée n'est fournie, affichez ce motif alphabétique intéressant dans les deux cas (le cas doit être cohérent) via une méthode de sortie acceptée :

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

Les espaces de fin et les nouvelles lignes sont acceptables, les échappatoires standard sont interdites, et cela se trouve être du , donc la réponse la plus courte en octets gagne!

FantaC
la source
Related , Related
FantaC
BTW si je vois une réponse étonnante, je la récompenserai 50 répétitions
FantaC
13
Le leader Agâche vraiment les choses pour moi ...
ETHproductions
2
Certaines personnes n'aiment tout simplement pas ce genre de défis, je pense.
Jonathan Allan
1
@ETHproductions Cela simplifie les choses pour moi!
Neil

Réponses:

5

Toile , 7 octets

Z[K*¹+]

Essayez-le ici!

Explication:

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
la source
Pourquoi n'avez-vous pas modifié votre réponse précédente?
Neil
@Neil bonne question. Pas sûr
dzaima
Accepté! Vous battez Jelly et Charcoal de deux octets!
FantaC
8

Gelée , 9 octets

ØAjṪ$Ƥż¹Y

Essayez-le en ligne!

Comment ça marche

Ø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
la source
2
Oh, haha ​​et j'étais sur le point de poster ØAjṪ$ƤżØAY: D
Jonathan Allan
6

R , 50 octets

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

Essayez-le en ligne!

Peut-être que la partie la plus intelligente ici utilise letters[0]la chaîne vide cat(character(0),'\n',sep="A")pour imprimer la première ligne.

Giuseppe
la source
6

Fusain , 9 octets

Eα⁺⪫…ακιι

Essayez-le en ligne! Le lien est vers la version détaillée du code. Explication:

 α          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
la source
4

6502 routine de code machine (C64), 39 octets

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

Sous-programme de code machine indépendant de la position, clobbers A, X et Y.

Démo en ligne

La démo se charge à $C000, donc utilisez SYS49152pour appeler la routine.


Démontage commenté:

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
la source
3

Java 8, 93 91 90 octets

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

-1 octet grâce à @ OlivierGrégoire en imprimant directement au lieu de revenir

Explication:

Essayez-le en ligne.

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
la source
2
90 octets (en utilisant simplement stdout au lieu de retourner).
Olivier Grégoire
Bonne réponse! J'ai porté sur C # pour voir s'il était plus court et j'en ai 91 (plus si System.
j'inclus
3

SNOBOL4 (CSNOBOL4) , 169 143 octets

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

Essayez-le en ligne!

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

Le problème ici est la première ligne

l'utilisation o s kajoutera un scaractère séparateur supplémentaire au début de chaque ligne et n'en aura pas non plus sà la fin. C'est OK car la ligne tsautera sur les deux lignes suivantes quand x=0. Cela signifie que ce osera toujours vide. Par conséquent, o s =supprimera le premier scaractère o, puis nous pouvons simplement imprimer o spour avoir le dernier approprié s.

Giuseppe
la source
2

JavaScript (ES6), 81 octets

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

Enregistrez 9 octets si une valeur de retour de tableau de chaînes est acceptable.

Neil
la source
2

Japt ( -Rdrapeau), 14 12 octets

-2 octets grâce à @Shaggy

;B¬
ËiU¯E qD

Testez-le en ligne!

ETHproductions
la source
Si seulement il y avait un raccourci pour s0,! ; p
Shaggy
12 octets . Mais pourquoi ne comptez-vous pas -Rici?
Shaggy
@Shaggy Oh wow, je savais qu'il me manquait quelque chose: P L' iastuce est géniale, merci! Quant au drapeau, il semble y avoir un nouveau consensus selon lequel chaque invocation unique d'un programme devrait être considérée comme une langue distincte. (ce qui rend le système de drapeaux de Japt un peu tricheur ...)
ETHproductions
2

Haskell , 49 48 octets

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

Essayez-le en ligne!

Edit: -1 octet grâce à totalement humain!

Laikoni
la source
2

PowerShell , 56 octets

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

Essayez-le en ligne!

Boucles 65vers 89, chaque itération construisant un chartableau de 65au nombre actuel $_, puis -joins ce tableau ensemble dans une chaîne avec le caractère suivant, puis clique sur ce caractère à la fin.

Remplacez le 89par un autre numéro ASCII pour mieux voir le comportement.

AdmBorkBork
la source
2

> <> , 44 34 octets

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

Essayez-le en ligne!

> <> , 44 octets

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

Essayez-le en ligne!

Comme j'utilise un itinéraire différent pour produire la sortie, j'ai publié ma propre réponse> <>; L'autre> <> réponse peut être trouvée ici.

Un grand merci à Jo King pour avoir repéré, je n'avais pas besoin de continuer à mettre "A" sur la pile si je comparais juste contre "Z" au lieu de 26. (-10 octets)

Explication

L'explication suivra le flux du code.

"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. 
Pélican bleu canard
la source
36 octets . Votre méthode est bien meilleure que la mienne
Jo King
inb4 "barré 44 est toujours 44; ("
Jo King
@JoKing Excellent point de comparaison avec Z, la seule amélioration que j'ai apportée a été de déplacer la logique de ligne et de placer le Z au milieu des éléments de la pile pour enregistrer à nouveau en utilisant ces guillemets.
Pélican bleu canard
1

Pyth , 13 octets

+\ajmPjedd._G

Essayez-le ici! , Alternative

aMais ce leader ...

M. Xcoder
la source
1
Bonjour: p
Jonathan Allan
@JonathanAllan Morning bro: p Vous et vos blagues intérieures!
M. Xcoder
1

Gelée , 13 octets

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

Essayez-le en ligne!

Explication

Ø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

abuse partiellement de la façon dont les chaînes et les listes de caractères diffèrent dans Jelly

HyperNeutrino
la source
C'était rapide!
FantaC
@tfbninja ehhh, 11 minutes est ok pour Jelly. merci cependant: P
HyperNeutrino
Vous pouvez remplacer votre deuxième ØApar ¹(comme celui de Dennis)
Jonathan Allan
@JonathanAllan oh cool, merci!
HyperNeutrino
1

APL + WIN, 51 octets

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

Explication:

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
la source
1

> <> , 47 octets

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

Essayez-le en ligne!

Comment ça marche:

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
la source
1

Acc !!, 84 octets

C'est d'ailleurs ce qui a inspiré ce défi:

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

Essayez-le en ligne!

FantaC
la source
1

GNU M4, 119 octets

Le pire jusqu'ici. Eh bien, le temps est déjà passé…

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
la source
1

Husk , 13 octets

Γ·:mhSzJḣ…"AZ

Essayez-le en ligne!

Explication

Ce leader Agâche vraiment les choses -.-

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

C # (.NET Core)

Port de la réponse de Kevin Cruijssen :

91 90 octets

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

Essayez-le en ligne!

132 122 110 109 104 103 103 octets

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

Essayez-le en ligne!

  • Remplacez ()par _pour montrer que nous déclarons une variable inutilisée. Merci Kevin Cruijssen.
aloisdg dit Réintégrer Monica
la source
Vous pouvez également le réduire à 90 octets en utilisant un paramètre inutilisé vide comme je l'ai fait dans ma réponse Java. Donc o=>{...}au lieu de ()=>{...}. Essayez-le en ligne: 90 octets .
Kevin Cruijssen
@KevinCruijssen Je ne savais pas! Merci!
aloisdg dit Réintégrer Monica le
@KevinCruijssen J'ai ajouté cette astuce à Tips for code-golfing in C #
aloisdg dit Reinstate Monica
1

Gelée , 22 octets

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

Essayez-le en ligne!

Comment ça marche:

                       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
la source
1

uBASIC , 80 octets

Fonction anonyme qui ne prend aucune entrée et sortie sur la console

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

Essayez-le en ligne!

Taylor Scott
la source
1

Visual Basic .NET (Mono) , 134 octets

Fonction déclarée qui ne prend aucune entrée et sortie sur la console

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

Essayez-le en ligne!

Taylor Scott
la source