Escadaria confusa do alfabeto


25

Não havendo entrada, produza esse interessante padrão de alfabeto em ambos os casos (o caso deve ser consistente) por meio de um método de saída aceito :

UMA
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

Espaços à direita e novas linhas são aceitáveis, brechas padrão não são permitidas e isso passa a ser um ; portanto, a resposta mais curta em bytes vence!



BTW, se eu ver uma resposta incrível vou bounty que 50 rep
FantaC

13
O líder Arealmente mexe as coisas para mim ...
ETHproductions

2
Algumas pessoas simplesmente não gostam desse tipo de desafio, eu acho.
Jonathan Allan

1
@ETHproductions Simplifica as coisas para mim!
Neil

Respostas:


5

Tela de pintura , 7 bytes

Z[K*¹+]

Experimente aqui!

Explicação:

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

Por que você não editou sua resposta anterior?
Neil

@ Neil boa pergunta. Não tenho certeza
dzaima

Aceitaram! Você vence Jelly and Charcoal em dois bytes!
FantaC 09/02

8

Geléia , 9 bytes

ØAjṪ$Ƥż¹Y

Experimente online!

Como funciona

Ø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
Ah, haha ​​e eu estávamos prestes a postar ØAjṪ$ƤżØAY: D
Jonathan Allan


6

R , 50 bytes

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

Experimente online!

Talvez a parte mais inteligente aqui esteja usando letters[0]a string vazia cat(character(0),'\n',sep="A")para imprimir a primeira linha.


6

Carvão , 9 bytes

Eα⁺⪫…ακιι

Experimente online! Link é a versão detalhada do código. Explicação:

 α          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

Rotina de código de máquina 6502 (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

Sub-rotina de código de máquina independente de posição, clobbers A, X e Y.

Demonstração online

A demonstração é carregada em $C000, então use SYS49152para chamar a rotina.


Desmontagem comentada:

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 bytes

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

-1 byte graças a @ OlivierGrégoire , imprimindo diretamente em vez de retornar

Explicação:

Experimente 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 

2
90 bytes (apenas usando stdout em vez de retornar).
Olivier Grégoire

Boa resposta! Eu mudei para C # para ver se era mais curto e recebo 91 (mais se incluir System.) :)
aloisdg diz 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

Experimente 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

O problema aqui é a primeira linha

Usar o s kadicionará um scaractere eparator extra no início de cada linha e também não terá um sno final. Isso está OK porque a linha tirá pular as duas linhas a seguir quando x=0. Isso significa que oainda estará em branco. Portanto, o s =removeremos o primeiro scaractere de oe, em seguida, podemos simplesmente imprimir o spara ter o último apropriado s.


2

JavaScript (ES6), 81 bytes

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

Salve 9 bytes se um valor de retorno da matriz de string for aceitável.


2

Japt ( -Rflag), 14 12 bytes

-2 bytes graças a @Shaggy

;B¬
ËiU¯E qD

Teste online!


Se ao menos houvesse um atalho para s0,! ; p
Salsicha

12 bytes . Mas por que você não está contando o -Raqui?
Shaggy

@ Shaggy Oh uau, eu sabia que estava faltando alguma coisa: P O itruque é ótimo, obrigado! Quanto à bandeira, parece haver um novo consenso de que cada chamada única de um programa deve ser considerada um idioma separado. (o que torna o sistema da bandeira do Japt parecem tipo de cheaty ...)
ETHproductions


2

PowerShell , 56 bytes

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

Experimente online!

Faz um loop 65para 89, cada iteração que constrói uma charmatriz 65com o número atual e $_, em seguida, -joinagrupa essa sequência em uma sequência com o próximo caractere e, em seguida, adere esse caractere no final.

Altere 89para outro número ASCII para ver melhor o comportamento.


2

> <> , 44 34 bytes

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

Experimente online!

> <> , 44 bytes

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

Experimente online!

Como uso uma rota diferente para produzir a saída, publiquei minha própria resposta> <>; A outra resposta> <> pode ser encontrada aqui.

Muito obrigado a Jo king por detectar que eu não precisava colocar "A" na pilha se comparasse com "Z" em vez de 26. (-10 bytes)

Explicação

A explicação seguirá o fluxo do código.

"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 bytes . Seu método é muito melhor do que a minha
Jo rei

inb4 "riscado 44 ainda é 44; ("
Jo King

@JoKing Excelente local em comparação com Z, a única melhoria que fiz foi mover a lógica da linha e colocar o Z no meio dos itens da pilha para economizar usando essas aspas novamente.
Teal pelican



1

Gelatina , 13 bytes

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

Experimente online!

Explicação

Ø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

abusa parcialmente da maneira como as seqüências de caracteres e as listas de caracteres diferem no Jelly


Aquilo foi rápido!
FantaC 13/0118

@tfbninja ehhh, 11 mins é bom para Jelly. Obrigado, porém: P
HyperNeutrino

Você pode substituir o seu segundo ØAcom ¹(como Dennis)
Jonathan Allan

@JonathanAllan oh legal, obrigado!
HyperNeutrino 14/01


1

APL + WIN, 51 bytes

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

Explicação:

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 bytes

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

Experimente online!

Como funciona:

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 bytes

O pior até agora. Bem, o tempo já está gasto ...

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

Casca , 13 bytes

Γ·:mhSzJḣ…"AZ

Experimente online!

Explicação

Essa liderança Arealmente atrapalha as coisas -.-

          "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)

Porto da resposta de Kevin Cruijssen :

91 90 bytes

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

Experimente online!

132 122 110 109 104 103 bytes

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

Experimente online!

  • Substitua ()por _para mostrar que declaramos uma variável não utilizada. Obrigado Kevin Cruijssen.

Você também pode reduzi-lo para 90 bytes usando um parâmetro vazio não utilizado, como fiz na minha resposta Java. Então, ao o=>{...}invés de ()=>{...}. Experimente online: 90 bytes .
Kevin Cruijssen

@KevinCruijssen Eu não sabia! Obrigado!
aloisdg diz Reinstate Monica 15/01


1

Gelatina , 22 bytes

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

Experimente online!

Como funciona:

                       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




Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.