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!



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

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.

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.


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


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

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 

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.


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.


2

Japt ( -Rdrapeau), 14 12 octets

-2 octets grâce à @Shaggy

;B¬
ËiU¯E qD

Testez-le en ligne!


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

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.


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. 

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

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


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

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



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)

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

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.

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




En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.