Alfabeto diagonal

66

Não havendo entrada, sua tarefa é gerar o seguinte:

a
 b
  c
   d
    e
     f
      g
       h
        i
         j
          k
           l
            m
             n
              o
               p
                q
                 r
                  s
                   t
                    u
                     v
                      w
                       x
                        y
                         z

De maneira não visual, sua tarefa é gerar cada letra do alfabeto, com espaços antes iguais à sua posição no alfabeto menos um.

Se você imprimir isso, ele deverá aparecer como o acima. Espaço em branco estranho que não afeta a aparência, bem como uma nova linha à direita, é permitido. Você pode usar todas as letras minúsculas ou todas as maiúsculas.

Você também pode retornar isso de uma função conforme as regras usuais, como uma string com novas linhas ou uma lista de strings.

Isso é , então a resposta mais curta em bytes vence!

Stephen
fonte
Os espaços precisam ser espaços ASCII reais ou posso dar uma saída como a<VERTICAL-TAB>b<VERTICAL-TAB>c...? E se houver alguns caracteres de backspace também? Contanto que o resultado visual seja o mesmo?
Digital Trauma
@DigitalTrauma, desde que pareça o mesmo, não me importo com o tipo de espaço em branco que você usa.
Stephen
Posso usar guias em vez de espaços?
@ yamboy1 hmm, provavelmente não. A maioria das guias é configurada para um grande número de espaços - se sua diagonal parece ter 4espaços antes da b, ela não parecerá muito diagonal. Se parece que a inclinação é ~ -1, está tudo bem.
Stephen
não afeta a aparência inclui ter um espaço à esquerda extra ou 2?
MildlyMilquetoast

Respostas:

87

Carvão , 2 bytes

↘β

Experimente online!

Quão?

 β - the lowercase alphabet
↘  - direction

Exatamente o tipo de desafio para o qual o carvão vegetal foi originalmente projetado.

Jonathan Allan
fonte
4
O :) linguagem certa
Stephen
2
Isso me lembra que eu provavelmente deveria trabalhar um pouco mais no Crayon ... Eu acredito ↘"abc ... xyz"qque seria o programa de trabalho mais curto. ( Experimente online! ) ↘``26O;)qDeve funcionar (comece com um backtick; para cada I em 0 ... 25, insira o I implícito, aumente o backtick e a saída), mas, por algum motivo, gera um erro de "pilha vazia". .
ETHproductions
2
2 bytes ?! Em que codificação a SOUTH EAST ARROW é um único byte?
Wyck
6
O @Wyck Charcoal (observação: especulação) usa uma página de código personalizada, que pode ser compactada para instruções de 1 byte. Isso é legítimo para o Code Golf. codegolf.meta.stackexchange.com/questions/9428/...
Draco18s
14
@StephenS, eu acho que você quer dizer a língua inferior direito :)
Wossname
18

C, 45 bytes

f(i){for(i=0;++i<27;)printf("%*c\n",i,i+96);}

Obrigado a @Dennis por salvar 5 bytes!

Maçaneta da porta
fonte
9
Funciona na minha máquina ™
Destructible Lemon
Eu acho que você teria que inicializar ou redefinir iem algum momento. Pelo menos no TIO, f()funciona apenas uma vez .
Dennis
@ Dennis Ah, você está certo. Corrigido isso.
Maçaneta
f(i){for(i=0;++i<27;printf("%*c\n",i,i+96));}salva alguns bytes.
Dennis
3
f(i){for(i=96;i<122;)printf("%c\v",++i);}para 41 bytes - certifique-se de executar isso em um terminal real (sim, isso é permitido )
NieDzejkob
13

05AB1E , 14 8 6 bytes

-2 bytes graças a @Emigna

AvyNú»

Como funciona

A      # lowercase alphabet
 v     # for letter in alphabet
  y    # push letter
   N   # push index of letter
    ú  # Pad letter with index of letter spaces
     » # Join with stack on newline.

Experimente online!

Versão original, 14 bytes

26FNð×N65+ç«}»
Neil A.
fonte
Você pode salvar outros 2 bytes com AvyNú».
Emigna
@ Emigna: Obrigado! Editará que no.
Neil A.
ƶparece tão perfeito, mas não é :(.
Magia Octopus Urna
Λprovavelmente ainda não estava disponível no momento, mas 26A3Λeconomiza um byte.
Kevin Cruijssen
11
@MagicOctopusUrn ₂A3Λteria sido ainda mais curto.
Kevin Cruijssen
12

JavaScript (ES6), 60 59 bytes

f=(n=10)=>n-36?" ".repeat(n-10)+n.toString(++n)+`
`+f(n):""

Uma função recursiva que retorna uma string com uma nova linha à direita.

ETHproductions
fonte
11
Uau, isso é tão sorrateiro. Convertendo um número no intervalo de 10 a 36 em um número estranho. Ainda não entendo por que a base também precisa aumentar.
Steve Bennett
2
@SteveBennett Correto, mas n.toString(++n)+f(n)é um byte menor que n.toString(36)+f(n+1).
ETHproductions
11
Você poderia fazer f=(n=10,s='')=>n-36?s+n.toString(++n)+'\n'+f(n,s+' '):""para 55.
Arnauld
11
Salvar um byte com algum ES8: "".padEnd(n-10)+n.toString(++n).
Shaggy
11
@ Arnauld, f=(n=10,s='')=>n-36?s+n.toString(++n)+'\n'+f(n,s+' '):sparece ser permitido.
Shaggy
12

Ruby , 28 bytes

26.times{|a|puts" "*a<<97+a}

Experimente online!

Explicação:

O operador << em uma string no Ruby executa o truque, conforme explicado na Documentação

  • str << número inteiro → str

  • str << obj → str

Anexar - Concatena o objeto especificado para str. Se o objeto for um número inteiro, ele será considerado um ponto de código e será convertido em um caractere antes da concatenação.

GB
fonte
12

R, 38 37 36 bytes

write(intToUtf8(diag(65:90),T),1,26)

(O uso de writeé inspirado na resposta de @ Giuseppe .)

Sven Hohenstein
fonte
3
Juro que tentei isso, mas não consegui fazê-lo funcionar! Bem feito. Você pode salvar 1 byte usando 65:90, pois letras maiúsculas são permitidas.
precisa saber é o seguinte
@ user2390246 Obrigado por apontar!
Sven Hohenstein
você pode usar em 1vez de ""cortar outro byte.
Giuseppe
@ Giuseppe Obrigado por apontar!
Sven Hohenstein
11

Vim, 29 bytes

:h<_↵↵↵y$ZZ25o <Esc>{qqpblD+q25@q

Experimente online!

↵ significa pressionar a tecla de retorno

<Esc> significa pressionar a tecla Escape

Como é que isso funciona?

:h<_↵↵↵                             Open the help and navigate to the alphabet
       y$ZZ                         Copy the alphabet and close the help
           25o <Esc>                Abuse auto-indent and create a whitespace diagonal
                    gg              Go to the beginning of the file
                      qq            Record a macro
                        pb          Paste the alphabet and go to the first letter
                          lD        Go to the second letter and cut the rest of the alphabet
                            +       Go to the first non-blank character in the next line
                             q      Stop recording the macro
                              25@q  Run the macro for the remaining letters
jmriego
fonte
Experimente online! Você pode usar isso para demonstrá-lo (o V é baseado no Vim e, em geral, é compatível com versões anteriores, exceto o aparentemente aparentemente autoindent é desativado). Além disso, menos importante, você perdeu a +explicação que me surpreendeu por um segundo.
precisa saber é o seguinte
Obrigado @ nmjcman101! Eu estava tentando encontrar alguma maneira de tentar vim online e nunca soube que cerca de V
jmriego
Você pode usar em vez de <Esc>. Parece um pouco melhor na minha opinião.
Assistente de trigo
Você pode salvar um byte se o fizer {, em vez degg
DJMcMayhem
Você poderia usar 2↵ vez de ↵↵↵ e talvez Y em vez de y $
GB
11

Python 2 , 36 bytes

n=65;exec"print'%*c'%(n,n);n+=1;"*26

Isso tira proveito do espaço em branco estranho que não afeta a regra de aparência .

Experimente online!

Versão alternativa, 38 bytes

n=1;exec"print'%*c'%(n,n+96);n+=1;"*26

Isso produz a saída exata da especificação de desafio.

Experimente online!

Dennis
fonte
Como funciona %*cmesmo?
Freira vazada
%*<identifier>requer dois argumentos: o comprimento para preenchê-lo e a coisa real a substituir. Algumas printfimplementações têm recursos ainda mais obscuros, como o que %1$<identifier>eu usei aqui .
Dennis
9

PHP, 39 bytes

for($s=a;!$s[26];$s=" ".++$s)echo"$s
";
user63956
fonte
Isto é bastante detalhado :) Aqui está o meu
aross
8

Pure Bash, 13

echo {a..z}^K^H

Aqui ^Ke ^Hsão literais caracteres de tabulação e controle ASCII backspace verticais. O xxddump deste script é o seguinte - use xxd -rpara gerar novamente o script real:

00000000: 6563 686f 207b 612e 2e7a 7d0b 08         echo {a..z}..
  • {a..z}é uma expansão de chave de bash padrão para produzir a b c ... z(espaço separado)
  • a ^Kguia vertical coloca o cursor uma linha abaixo na mesma posição
  • o ^Hbackspace move o cursor para trás um para apagar o espaço separador

Experimente online . cole tacsão usados ​​no rodapé para que isso seja renderizado corretamente em uma janela do navegador, mas isso é desnecessário em um terminal comum.


Se os caracteres de controle não ortodoxos acima na saída são muito difíceis para você, você pode fazer o seguinte:

Bash + utilitários comuns, 24

echo {a..z}^K^H|col -x|tac

Aqui ^Ke ^Hsão literais caracteres de tabulação e controle ASCII backspace verticais. O xxddump deste script é o seguinte - use xxd -rpara gerar novamente o script real:

00000000: 6563 686f 207b 612e 2e7a 7d0b 087c 636f  echo {a..z}..|co
00000010: 6c20 2d78 7c74 6163                      l -x|tac

Experimente online . A guia vertical e o backspace podem ficar invisíveis no navegador, mas eles estão lá (invisíveis no chrome, visíveis no firefox).

  • col -x renderiza novamente a entrada de modo que caracteres engraçados de controle sejam substituídos por espaços e novas linhas para fornecer o mesmo resultado visual
  • por algum motivo, colgera linhas na ordem inversa. taccorrige isso.
Trauma Digital
fonte
Isso é muito legal :) (e obrigado a meta e @Dennis por sugerir a classificação de respostas no codegolf por atividade, em vez de pontuação, para que surjam melhores respostas em vez das (muito chatas) linguagens do codegolf integradas : codegolf.meta.stackexchange. com / questions / 10127 /… )
Olivier Dulac
Muitos terminais são renderizados ^Kcomo cursor para cima, que é o comportamento que coldeve estar emulando aqui.
Neil
@ Neil sim, isso faz sentido - a página de colmanual chama um VT de "alimentação de linha reversa". xterm, gnome-terminal e OSX terminal caem em uma linha ...
Digital Trauma
8

Brain-Flak , 124, 116 , 106 bytes

((((()))))(((([][]){}){})[[]()]<>){(({})<(({})<({}<>({})({})<>)>)
{({}<(<>({})<>)>[()])}{}(<>[][]<>)>[()])}

Experimente online!

Explicação:

Esta resposta abusa do Stack Height Nilad , mas de uma maneira nova que nunca usei antes, da qual me orgulho bastante. Fora isso, a resposta não é muito inteligente.

Portanto, analisando os caracteres usados ​​nesta arte ASCII, existem realmente três valores frequentemente usados:

  • 32 (espaço),

  • 64 (adicione 64 a N para obter a enésima letra do alfabeto) e

  • 10 (nova linha)

Assim como 26. (número de loops) E esses números são enviados em locais diferentes, por isso não podemos realmente reutilizar valores intermediários para diminuir os números grandes. E pressionando todos esses números há apenas 86 bytes:

10:
((()()()()()){})

26:
((((()()()){}){}()){})

32:
((((()()()()){}){}){})

64:
(((((()()()()){}){}){}){})

Isto é horrível. Então, aqui está como a tornamos mais conveniente. A abordagem óbvia é colocar um 32na pilha alternativa, o que torna nosso 32snippet: (<>({})<>)e nosso 64snippet (<>({})({})<>). Se combinarmos nosso push inicial 32 com o push inicial 26 , podemos salvar aproximadamente 8 bytes. (meu primeiro golfe).

Mas é aqui que entra o truque do qual realmente me orgulho. Como não estamos usando a pilha alternativa para mais nada, também podemos reduzir os 10 também. Para fazer isso, colocaremos 4 números arbitrários na pilha logo no início do programa. Como também pressionamos 32, isso aumenta o valor do []nilad, para 5, o que torna nosso 10snippet muito mais conveniente. E, para nossa sorte, ele também nos permite jogar o push 32 e 26 também!

#Push 32, 26
(((((()()()()){}){}){})<>[(()()()){}])

#Push 10
((()()()()()){})

Torna-se

#Push 32, 26 (-2 bytes)
(((((())))))((([][][]){}()())[[]]<>)

#Push 10 (-6 bytes)
(<>[][]<>)

Então, aqui está uma explicação detalhada:

# Push 1 four times
((((()))))

# Push 32 to main stack (to reuse later)...
((([][][]){}()())

# And then 26 to the alternate stack
[[]()]<>)

#While true
{

    # Keep track of the current TOS
    (({})<

        # Push [TOS, TOS + 64] (To get uppercase characters)
        (({})<({}<>({})({})<>)>)

        # TOS times...
        {
            # Decrement the loop counter, while pushing a space underneath it
            ({}<(<>({})<>)>[()])

        # Endwhile, pop zeroed counter
        }{}

        # Push 10 (newline)
        (<>[][]<>)

    # Push TOS - 1 back one
    >[()])

# Endwhile
}
DJMcMayhem
fonte
7

V , 15 13 11 bytes

¬azòÙr klDj

Experimente online!

Explicação

¬az         ' Insert a-z
   ò        ' Recursively
    Ù       ' Duplicate current line down
     r      ' Replace the first character with a ' '
       kl   ' Move up a line and right
         D  ' Delete from here to the end
          j ' Move back down
nmjcman101
fonte
7

Planilhas Google, 67 65 bytes

=ArrayFormula(IF(ROW(A1:Z)=COLUMN(A1:Z26),CHAR(96+ROW(A1:Z26)),))

= Fórmula da matriz (SE (ROW (A1: Z) = COLUNA (A1: Z26), CHAR (96 + ROW (A1: Z26)), ""))

Saindo do esclarecimento que qualquer espaço em branco fará, usei células visivelmente vazias

Resultado

Deixe-me saber se isso não conta, se eu entendi errado a contagem de bytes ou se eu estraguei um pouco a etiqueta, já que este é meu primeiro post aqui.

Editar: Acontece que eu posso salvar 2 bytes deixando de fora o "", pois as folhas do Google aceitarão um valor se vazio.

Mr.Parivir
fonte
11
Bem-vindo ao PPCG :) Parece bom! Bom trabalho, superando as outras respostas do Planilhas Google!
Stephen
7

APL (Dyalog) , 9 7 bytes SBCS

-2 bytes graças à dica da ngn.

↑⍨∘-⌸⎕A

[Experimente online!] [TIO-j3o0ipjy]

⎕A o alfabeto A maiúsculo

 entre cada par (elemento, lista de índices), insira a seguinte função tácita:

↑⍨ do elemento (a letra) pegue…

 a…

- número de caracteres no índice negado, ou seja, muitos caracteres na parte de trás, preenchendo a frente com espaços.

Experimente online!

Adão
fonte
Agradável. Minha tentativa de J foi um pouco mais detalhada. Existe uma tradução desses verbos em J?
Jonah
@ Jonah Verbs: é {.e é i.Advérbios: ¨é "0e é ~.
Adám
Obrigado. Parece que a tradução J perde alguma brevidade:(a.{~97+i.26){."0~-1+i.26
Jonas
@ Adám, a saída não parece tão necessária; dica: utilizar a saída de uma matriz adequada e guardá 2 bytes
NGN
@ngn Você também pode retornar (…) uma lista de strings. Mas eu vou investigar. Edit: Ah sim, claro!
Adám
6

Oitava, 25 19 ou 12? bytes

[diag(65:90)+32 '']

Experimente online!

Outra solução proposta por @LuisMendo (12 bytes) que eu testei na versão Windows do Octave:

diag('a':'z')

Explicação:

Gera matriz diagonal de a:z.

rahnema1
fonte
@LuisMendo In tio não posso produzir o mesmo resultado. É uma expressão, que pode ser avaliada, que produzem o resultado desejado :)
rahnema1
A solução proposta por Luis parece funcionar no TIO agora ... Nova versão do Octave, talvez?
Stewie Griffin
Ou nova versão do tio !?
precisa saber é o seguinte
6

Java 8, 72 71 70 61 bytes

o->{for(int a=0;a++<26;)System.out.printf("%"+a+"c%n",a+96);}

-1 byte, imprimindo o alfabeto maiúsculo em vez de minúsculo.
-1 byte imprimindo diretamente, em vez de retornar uma String com várias linhas.
-8 bytes graças a @ OliverGrégoire usando printfdiretamente para se livrar String s="";. E também -1 byte, alterando ()->para o->.

Experimente aqui.

Kevin Cruijssen
fonte
A implementação ingênua é mais curta do que eu pensaria. Você pode salvar um byte com c=65(ou 64na verdade) para não precisar do número de 3 dígitos. O retorno de uma matriz em vez da string pode economizar alguns bytes, pois você pode remover o +"\n"?
TheLethalCoder
@TheLethalCoder Ah, não sabia que podíamos produzir o alfabeto maiúsculo. Deslizou sobre isso. Obrigado. E o que você quer dizer com saída de uma matriz? Como uma matriz de matrizes?
Kevin Cruijssen
11
@TheLethalCoder Qualquer dica é bem-vinda, então obrigado. Mas, neste caso, não será mais curto. :)
Kevin Cruijssen
11
@ Winter Sobre sua primeira sugestão, isso ainda está sendo discutido neste meta-post , mas, a julgar pelos votos, acho que é de fato permitido a partir de agora. Quanto ao segundo, não tenho certeza. Parece meio que trapacear / distorcer as regras, especialmente depois dessas discussões acaloradas nos comentários deste meta post e respostas .
Kevin Cruijssen
11
62 bytes: ()->{for(int a=0;a++<26;)System.out.printf("%"+a+"c%n",a+96);}usando a mesma ideia que em outro desafio .
Olivier Grégoire
5

Geléia ,  10  9 bytes

-1 byte graças a Dennis (evite diminuir Jusando um intervalo mais baixo 26Ḷ, diretamente)

26Ḷ⁶ẋżØaY

Um programa completo que imprime o resultado.

Experimente online!

( ØaJ’⁶ẋżpara 7 é um link monádico que retorna uma lista de listas de caracteres, mas [["a"],[" ","b"],[" ","c"],...]é provável que seja inaceitável.)

No entanto, eu não ficaria surpreso se houvesse uma maneira mais curta em que não pensei!

Quão?

26Ḷ⁶ẋżØaY - Main link: no arguments
26        - literal 26
  Ḷ       - lowered range = [0,1,2,...,26]
   ⁶      - literal space character
    ẋ     - repeat          [ [],      [' '],      [' ',' '],    ...,  [' ',' ',...,' ']]
      Øa  - yield lowercase alphabet
     ż    - zip             [[[],'a'],[[' '],'b'],[[' ',' '],'c'],...,[[' ',' ',...,' '],'z']]
        Y - join with newlines  [[],'a','\n',[' '],'b',\n',[' ',' '],'c','\n',...,'\n',[' ',' ',...,' '],'z']
          - implicit print (smashes the above together, printing the desired output)
Jonathan Allan
fonte
Eu ainda permitem [["a"],[" ","b"],[" "," ","c"],...]desde uma lista de caracteres é uma definição alternativa para uma cadeia, mas uma tupla não parece enquadrar-se :)
Stephen
Sim, foi o que eu pensei.
Jonathan Allan
11
... observe que, no exemplo acima, "..."há uma lista de caracteres, então é verdade que o [[['a']],[[[' '],['b']],[[' ',' '],['c']],...]Jelly não tem strings, apenas listas.
Jonathan Allan
26Ḷ⁶ẋżØaYsalva um byte.
Dennis
ØaJ’⁶ẋżpara 7, para sua versão alternativa.
Freira vazada
5

PowerShell, 29 bytes

0..25|%{' '*$_+[char]($_+97)}
TessellatingHeckler
fonte
Eu gosto de como você adiciona 97 à $_medida que avança, legal.
root
5

Alice , 22 20 bytes

52E&waq'a+q&' d&o]k@

Experimente online!

Embora a saída seja uma string, o modo ordinal não é o caminho a seguir para esse desafio.

Explicação

52E&w             k@     do 26 times
     a                   push 10 (LF)
      q                  push current tape position (initially zero)
       'a+               add the ASCII code for "a"
          q&'            push 32 (space) a number of times equal to tape position
              d&o        output entire stack
                 ]       move tape position one space to the right

Solução anterior

["za/?rO&
' !]\"ohkw@/

Experimente online!

Passei por cerca de dez soluções de 23 bytes antes de encontrar essa.

Explicação

Este programa usa a fita para rastrear o número de espaços a serem produzidos. Os modos cardinal e ordinal usam a mesma fita, mas eles têm cabeças de fita separadas. Os dois modos têm interpretações diferentes do que veem na fita, e o programa explora completamente essa diferença.

Os comandos são executados na seguinte ordem:

[                   move cardinal tape position left
 "za"               push this string (as a string, since the final " is in ordinal mode)
     r              interpolate to entire range (i.e., the lowercase alphabet backward)
      h             split first character from string
       &            for each character in string: push that character and...
        w                                         push current address onto return address stack
         ' !        (cardinal mode) place 32 (space) at current cardinal tape position
            ]       (cardinal mode) move cardinal tape position right
             ?      (back to ordinal mode) read string from tape starting at ordinal tape position
                    this string will consist of n-1 spaces.
              o     output string of spaces
               O    output top of stack (current letter) followed by newline
                k   return to pushed return address. 
                    after 26 times through this loop, the return address stack will be empty and this is a no-op.
                 @  terminate
Nitrodon
fonte
5

Brainfuck, 103 bytes

>-<-----[[<+>->>+++>-<<<]>++]<<<<<<<<<[-]>>>-[<[-]<[-]<[>+>+<<-]>>[<<+>>-]<[>>>>.<<<<-]<+>>>>.+>>.<<<-]

Experimente online!

A localização das variáveis ​​é de alguma forma improvável.

Explicação

>-<-----[[<+>->>+++>-<<<]>++]   Initializes the tape.
<<<<<<<<<[-]>[-]>>-             Resets variables that
                                need to be at 0.
[                               For loop (25 to 0).
 <[-]<<[>+>+<<-]>>[<<+>>-]      Copy the spaces count in
                                order to use it in a loop.
 <[>>>>.<<<<-]                  Prints the spaces.
                                Prints the character followed
 <+>>>>.+>>.<<<-                by a new line. Also decrements
                                the main loop counter.
]
6infinity8
fonte
5

Planilhas Google, 69 bytes

=ArrayFormula(JOIN("
",REPT(" ",ROW(A1:A26)-1)&CHAR(96+ROW(A1:A26))))

Nada complicado aqui. O único truque é usar ArrayFormulae ROW(A1:A26)retornar 26 valores diferentes para a JOINfunção. A saída é assim:

Resultado


Acho que o Excel 2016 pode fazer a mesma coisa, TEXTJOINmas não consigo inserir fórmulas de matriz na versão online e só tenho 2013. A fórmula deve ser esta:

=TEXTJOIN("
",FALSE,REPT(" ",ROW(A1:A26)-1)&CHAR(96+ROW(A1:A26)))

A inserção como uma fórmula de matriz ( Ctrl+ Shift+ Enter) adiciona colchetes { }de ambos os lados, elevando-o para 67 bytes. Qualquer pessoa que possa verificar se funciona é bem-vinda para usá-la como sua própria resposta.

Engenheiro Toast
fonte
5

Semente , 6014 bytes

Eu não acho que isso ganhará nenhum prêmio, mas apenas por diversão, aqui está uma solução no Seed.

86 11103250503694729158762257823050815521568836599011209889044745493166180250197633623839266491438081837290079379263402288506775397211362446108152606095635373134468715450376738199004596861532212810083090232034321755895588102701453625219810339758989366211308223221344886043229936009486687653111291562495367476364760255760906228050130847228170228716790260998430434027546345063918859356161024202180254514539438087787769611000320430464740566450402368450792375043801526494811596087812709169139468697779440918934518195843690439213251884693846598754642076364755341359062651237754916053099089619667382845958005035392458577634784453744876558142057256976895330859887974064083588368087014591508237946214519271550243549214199679364098489146944338807874570414584343165070707969101892779772740177526390597395955859236589308394889243501541206981604661264930842784772121710695027991351718061777696274815931123342985242351444203296855501870888626347939456384376808446806093364176576945969539054970975848477876079897476093353730443488664472826635815956526890935049081522728044807877072639829234224838977148057506785320443165975265560224605597481381188291535996775480326796788286452216432605854564432262547835415260058472165825285438444435690700488258778785613363062417500848996527077259315494936037544655054620369560227407957368700650031346856230643646273909094915618471799926504192999361174763592054723307855670381682927214117502862645460031555724588536036895597768493827964819026940533784490457441244859937078155137620826821294513857153097135094397278852300032685608169642137925241118197368192392427097109982751185030229544527638686131131545529690698706313745703838144933923021851042677941879847025167921010148923860660695145106913052517930707522151230705792709484338746351589089180137363986003757314611932324492978098101655359729841878862276799317010824753645947659706175083519817734448003718088115457982394423932136760435046136644679525408371158980833993157988971884061469882136904103033944270884697456159261033500286722891139158500027351042265757431184139617566089023339480051231776345929815102059539844917563709940188668873305602146506284075271989710388430531233185164106985265575418252638186398535149202928422854319253947591044830747981534342833040219194969504971457701296402664807369043224201667623773161453335066484102800249947322601702575025462427139266561015140950621152993027466758026351218924607290766894274223554418125824416921899080393405328694235821466034161071834073874727856768719898425047229002772806527172294625623026601313091815217479540688812203850300478145319935479599086534606210099372526810614742385909275512758349679098012967475393301857434507012875239092688018536028125644341148882858752275129016876257290205949225918496182271679312996010157634568807332616541938310641844258434083838017690572891417189135014450484203635258935943095637185443145042430274553211816422809756194554145177421779800554334935224073734034988935790096239926730047370699006392111034056662661567902477446646680125183082979598538506383502737734442490068661537425714549752783861222862366340979663873475326752237893690641570287341027097775099918958849864419430754493042534812120486345363285167685811903366691676146427476942948696624274431993989133835880516551024369474029197791751838810883302415448112237526350703063618171739262753474029252659418383385834751808940073804107171146665382663467460066719556797639176747423279761528061219482681051780434845070421974558638870988408449698678976622755518024906714421419806347234183574860655249471877105716127767795785164699804819127058322715857697491583787449703283625085118896433923054087238479453964363805045497229148813441732912067120594705269402106426011497763749556561398150139686331615167139081591537739333533146667211063179804707883556569241294269430626179579760506971066676011512530066694518309930078451295032445835025178124213221937594928472509588116557231122849491576207720183829735710200290762251904109318007206980645946249679357907549498615310165588678201768095297568708803842208357473777731751349499510116345704811971207818719582793964185192140178454948686109674659005978400204479072321714207828018696339659886683414074211823497880135255138161141724546221354224299071581607979907417508104234534779573666933024250229754952685174194168516481670999039048675109878524061868078078216337487277443941946961426121900907734301692962783139932352047932263834773963592317279425421954035566305805348109175553209815893678595198155962166838761859540063188209014774346841267440789072833797121217961797443744676162541668802226500817146368372390178287945076657776275930590173768326046610094573983886099504933977126798348879838826160714899283593774855907724617352862079916515034033299006419237012240730789008999523238851913897908225482003661109026061857228300111070725651744312468140016983078297938157227595743419983763920290850801438187869169473456288283458163865462359588316419331445070232596307970490434468929587726795603069137946085898481642595124580643542063564880389350236902538522311931690905858973696558714577085714396738993556273941292496636824719451697631982422926675238248502170501569627556395875619564600587531422890212003952929325067813498958390095519100963598626450443103780781917045489137526377521695121594716424797216910752252094749957224424042047863869830458287114846161217532552045343745235776511344577755412402833175338541217548987687334493461236111032661075185714361252784989689657180878190058132112701323898697673356854132286586129946906160482715702618768869398700713988301485421822519104930442450343377920756456344715552821899659777521739288202633751258303637433110490141551780764889912485271829265224821750882760152112536985349681370761157202793523201156381835717321637420939424473215237574260806475544972321933149796156065126465186203580256364372579422208318560608817806013462242728082475787319168695978160861791054731154820533251279706873332364894538291172324730671914083193733203570060223897442373172904974570329139578763294810924815364789498523721281918680145538278976651264

Ele se traduz no seguinte programa Befunge:

vaa{       @>
v#      g02<v
>30g20g`   |
10g-:!v!: < >#<
v,:g02_40g,1- ^
>1+20p$91+, v
TehPers
fonte
4

Adicionar ++ , 1069 bytes

+97
&
-87
&
+22
&
+66
&
-88
&
+22
&
&
+67
&
-89
&
+22
&
&
&
+68
&
-90
&
+22
&
&
&
&
+69
&
-91
&
+22
&
&
&
&
&
+70
&
-92
&
+22
&
&
&
&
&
&
+71
&
-93
&
+22
&
&
&
&
&
&
&
+72
&
-94
&
+22
&
&
&
&
&
&
&
&
+73
&
-95
&
+22
&
&
&
&
&
&
&
&
&
+74
&
-96
&
+22
&
&
&
&
&
&
&
&
&
&
+75
&
-97
&
+22
&
&
&
&
&
&
&
&
&
&
&
+76
&
-98
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
+77
&
-99
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
+78
&
-100
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+79
&
-101
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+80
&
-102
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+81
&
-103
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+82
&
-104
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+83
&
-105
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+84
&
-106
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+85
&
-107
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+86
&
-108
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+87
&
-109
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+88
&
-110
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+89
&
-111
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+90
&
P

Experimente online!

Sim. Isso é codificado. Tenho certeza de que existe uma maneira melhor e, se você quiser encontrá-la, vá em frente, mas dessa maneira parece funcionar melhor, pois o Add ++ é difícil de trabalhar com memória.

caird coinheringaahing
fonte
4

R , 59 49 47 bytes

-10 bytes graças a djhurio

-2 bytes graças a Sven Hohenstein

write("diag<-"(matrix("",26,26),letters),"",26)

Imprime em stdout. Superado pelo usuário2390246

Experimente online!

Giuseppe
fonte
Você pode substituir 26^2por 676para salvar um byte.
Maçaneta
2
m=matrix("",26,26);diag(m)=letters;write(m,'',26)(49 bytes)
djhurio
Para a mesma quantidade de bytes, você pode imprimir a matriz usandocat(m,fill=27)
JAD
11
@djhurio "Para a mesma quantidade de bytes"
JAD
11
@ Giuseppe O comando "diag<-"(x, y)é semelhante ao diag(x) <- y. O valor não está atribuído a uma variável, mas retornado.
Sven Hohenstein
4

> <> , 46 44 42 bytes

"A"0::?!v" "o1-40.
*(?!;30.>~$:oao1+$1+:d2

Experimente online!

Explicação

Line 1:
"a"0::?!v" "o1-40.
"a"0                       :Initialize the stack items (print char and space count)
    ::?!v                  :Duplicate the space count, check if 0, go down if 0
         " "o1-            :Print a space then take 1 from the space count
               40.         :Jump to codepoint row 0 col 4 (this restarts the loop)
Line 2:
*(?!;30.>~$:oao1+$1+:d2
        >~                 :Remove the zeroed space counter off the stack
          $:oao1+          :Place our print char on the top of the stack, duplicate and print it, print a new line, increase it by 1; a->b->c etc
                 $1+       :Place our space count on the top of the stack and increase it by 1
*                   :d2    :Duplicate the space counter, add 26 to the stack
 (?!;                      :Add 0 to the stack, less than compare 0, if the counter is above 0 it terminates
     30.                   :Jump to the first line, (back to printing spaces)

Esta é uma abordagem completamente diferente dos meus 46 bytes anteriores, por isso incluí o TIO no único. 46 bytes Experimente online!

Abaixo está um link para os envios de Emigna, foi a primeira> <> resposta, mas acredito que a minha seja diferente o suficiente (e economiza alguns bytes) para justificar uma segunda.

Resposta de Emigna

Pelicano-verde
fonte
E agora estamos empatados. Melhor se você golf fora de um byte ou dois para ter certeza;)
Emigna
@Emigna, pensei 3 bytes salvos seria suficiente: o acho que tenho mais algum trabalho a fazer :)
Teal pelicano
4

Haskell , 66 65 58 57 45 43 bytes

Agradecemos a @nimi e @maple_shaft por salvar 12 14 bytes.

unlines[(' '<$['b'..n])++[n]|n<-['a'..'z']]

Experimente online!

vroomfondel
fonte
11
Você deseja obter a mesma pontuação, mas às vezes você pode usar <$em vez de replicar:(' '<$[1..(fromEnum n-97)])
maple_shaft
2
Você pode alterar a sugestão de @ maple_shaft para (' '<$['b'..n]).
N
Como funções sem nome são permitidas, não há necessidade de f=.
N
2
Btw, mesmo byte count: ['a'..'z']>>= \n->(' '<$['b'..n])++[n,'\n'].
N
4

PHP, 23 bytes

Nota: usa a codificação IBM-850.

<?=join(~¶,range(a,z));

Execute assim:

echo '<?=join(~¶,range(a,z));' | php -n;echo
# With default (utf8) terminal:
echo '<?=join("\v",range(a,z));' | php -n;echo

Explicação

Crie uma matriz de todos os caracteres do alfabeto, junte-o a uma guia vertical como cola.

aross
fonte
4

brainfuck , 80 bytes

++++++++[>+>++++>++++++++>+++<<<<-]>++>>+>++[->[<<<.>>>->+<]>+[-<+>]<<<.+<<.>>>]

Experimente online!

Formatado:

++++++++[>+>++++
>++++++++>+++<<<
<-]>++>>+>++[->[
<<<.>>>->+<]>+[-
<+>]<<<.+<<.>>>]

Utiliza uma função simples de geração multiplicativa para colocar algumas constantes na memória e, em seguida, repete o processo de impressão de N espaços 'A' + Npara N = 0..25.

Anotado:

INITIALIZE TAPE: 10 32 65 >26< 0 0
C_NEWLINE: 10
C_SPACE: 32
V_ALPHA: 65
V_COUNTER: 26
V_PREFIX: 0
V_PREFIX_TEMP: 0
++++++++[>+>++++>++++++++>+++<<<<-]>++>>+>++

WHILE V_COUNTER != 0  [-
   "PRINT C_SPACE REPEATED V_PREFIX TIMES"
   "V_PREFIX_TEMP = V_PREFIX"
     V_PREFIX TIMES  >[-
       PRINT C_SPACE <<<.>>>
       INCREMENT V_PREFIX_TEMP >+<
     ]
   "V_PREFIX = V_PREFIX_TEMP PLUS 1"
     V_PREFIX_TEMP PLUS 1 TIMES  >+[-
       INCREMENT V_PREFIX <+>
     ]
   PRINT C_ALPHA <<<.
   INCREMENT C_ALPHA +
   PRINT C_NEWLINE <<.
>>>]
Conor O'Brien
fonte
4

RProgN 2 , 5 bytes

aS`\x0B.

\ x0B é um literal de guia vertical

Isso apenas pega o alfabeto em minúsculas, divide-o e une-o com guias verticais. Isso produz o efeito pretendido em determinados terminais Bash.

Executando o Script

ATaco
fonte