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 é código-golfe , então a resposta mais curta em bytes vence!
code-golf
kolmogorov-complexity
alphabet
Stephen
fonte
fonte
a<VERTICAL-TAB>b<VERTICAL-TAB>c...
? E se houver alguns caracteres de backspace também? Contanto que o resultado visual seja o mesmo?4
espaços antes dab
, ela não parecerá muito diagonal. Se parece que a inclinação é ~-1
, está tudo bem.Respostas:
Carvão , 2 bytes
Experimente online!
Quão?
Exatamente o tipo de desafio para o qual o carvão vegetal foi originalmente projetado.
fonte
↘"abc ... xyz"q
que seria o programa de trabalho mais curto. ( Experimente online! )↘``26O;)q
Deve 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". .C, 45 bytes
Obrigado a @Dennis por salvar 5 bytes!
fonte
i
em algum momento. Pelo menos no TIO,f()
funciona apenas uma vez .f(i){for(i=0;++i<27;printf("%*c\n",i,i+96));}
salva alguns bytes.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 )05AB1E ,
1486 bytes-2 bytes graças a @Emigna
Como funciona
Experimente online!
Versão original, 14 bytes
fonte
AvyNú»
.ƶ
parece tão perfeito, mas não é :(.Λ
provavelmente ainda não estava disponível no momento, mas26A3Λ
economiza um byte.₂A3Λ
teria sido ainda mais curto.JavaScript (ES6),
6059 bytesUma função recursiva que retorna uma string com uma nova linha à direita.
fonte
n.toString(++n)+f(n)
é um byte menor quen.toString(36)+f(n+1)
.f=(n=10,s='')=>n-36?s+n.toString(++n)+'\n'+f(n,s+' '):""
para 55."".padEnd(n-10)+n.toString(++n)
.f=(n=10,s='')=>n-36?s+n.toString(++n)+'\n'+f(n,s+' '):s
parece ser permitido.Ruby , 28 bytes
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.
fonte
R,
383736 bytes(O uso de
write
é inspirado na resposta de @ Giuseppe .)fonte
1
vez de""
cortar outro byte.Vim, 29 bytes
Experimente online!
↵ significa pressionar a tecla de retorno
<Esc> significa pressionar a tecla Escape
Como é que isso funciona?
fonte
+
explicação que me surpreendeu por um segundo.␛
vez de<Esc>
. Parece um pouco melhor na minha opinião.{
, em vez degg
Python 2 , 36 bytes
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
Isso produz a saída exata da especificação de desafio.
Experimente online!
fonte
%*c
mesmo?%*<identifier>
requer dois argumentos: o comprimento para preenchê-lo e a coisa real a substituir. Algumasprintf
implementações têm recursos ainda mais obscuros, como o que%1$<identifier>
eu usei aqui .PHP, 39 bytes
fonte
Pure Bash, 13
Aqui
^K
e^H
são literais caracteres de tabulação e controle ASCII backspace verticais. Oxxd
dump deste script é o seguinte - usexxd -r
para gerar novamente o script real:{a..z}
é uma expansão de chave de bash padrão para produzira b c ... z
(espaço separado)^K
guia vertical coloca o cursor uma linha abaixo na mesma posição^H
backspace move o cursor para trás um para apagar o espaço separadorExperimente online .
col
etac
sã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
Aqui
^K
e^H
são literais caracteres de tabulação e controle ASCII backspace verticais. Oxxd
dump deste script é o seguinte - usexxd -r
para gerar novamente o script real: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 visualcol
gera linhas na ordem inversa.tac
corrige isso.fonte
^K
como cursor para cima, que é o comportamento quecol
deve estar emulando aqui.col
manual chama um VT de "alimentação de linha reversa". xterm, gnome-terminal e OSX terminal caem em uma linha ...Brain-Flak ,
124, 116, 106 bytesExperimente 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:
Isto é horrível. Então, aqui está como a tornamos mais conveniente. A abordagem óbvia é colocar um
32
na pilha alternativa, o que torna nosso32
snippet:(<>({})<>)
e nosso64
snippet(<>({})({})<>)
. 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 nosso10
snippet muito mais conveniente. E, para nossa sorte, ele também nos permite jogar o push 32 e 26 também!Torna-se
Então, aqui está uma explicação detalhada:
fonte
V ,
151311 bytesExperimente online!
Explicação
fonte
Planilhas Google,
6765 bytes= 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
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.
fonte
APL (Dyalog) ,
97 bytes SBCS-2 bytes graças à dica da ngn.
[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!
fonte
↑
é{.
e⍳
éi.
Advérbios:¨
é"0
e⍨
é~
.(a.{~97+i.26){."0~-1+i.26
⌸
a saída de uma matriz adequada e guardá 2 bytesOitava,
2519 ou 12? bytesExperimente online!
Outra solução proposta por @LuisMendo (12 bytes) que eu testei na versão Windows do Octave:
Explicação:
Gera matriz diagonal de
a:z
.fonte
Java 8,
72717061 bytes-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
printf
diretamente para se livrarString s="";
. E também -1 byte, alterando()->
parao->
.Experimente aqui.
fonte
c=65
(ou64
na 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"
?()->{for(int a=0;a++<26;)System.out.printf("%"+a+"c%n",a+96);}
usando a mesma ideia que em outro desafio .Geléia ,
109 bytes-1 byte graças a Dennis (evite diminuir
J
usando um intervalo mais baixo26Ḷ
, diretamente)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?
fonte
[["a"],[" ","b"],[" "," ","c"],...]
desde uma lista de caracteres é uma definição alternativa para uma cadeia, mas uma tupla não parece enquadrar-se :)"..."
há uma lista de caracteres, então é verdade que o[[['a']],[[[' '],['b']],[[' ',' '],['c']],...]
Jelly não tem strings, apenas listas.26Ḷ⁶ẋżØaY
salva um byte.ØaJ’⁶ẋż
para7
, para sua versão alternativa.PowerShell, 29 bytes
fonte
$_
medida que avança, legal.Alice ,
2220 bytesExperimente online!
Embora a saída seja uma string, o modo ordinal não é o caminho a seguir para esse desafio.
Explicação
Solução anterior
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:
fonte
Brainfuck, 103 bytes
Experimente online!
A localização das variáveis é de alguma forma improvável.
Explicação
fonte
Planilhas Google, 69 bytes
Nada complicado aqui. O único truque é usar
ArrayFormula
eROW(A1:A26)
retornar 26 valores diferentes para aJOIN
função. A saída é assim:Acho que o Excel 2016 pode fazer a mesma coisa,
TEXTJOIN
mas não consigo inserir fórmulas de matriz na versão online e só tenho 2013. A fórmula deve ser esta: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.fonte
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.
Ele se traduz no seguinte programa Befunge:
fonte
shortC , 33 bytes
Experimente online!
fonte
Adicionar ++ , 1069 bytes
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.
fonte
R ,
594947 bytes-10 bytes graças a djhurio
-2 bytes graças a Sven Hohenstein
Imprime em stdout. Superado pelo usuário2390246
Experimente online!
fonte
26^2
por676
para salvar um byte.m=matrix("",26,26);diag(m)=letters;write(m,'',26)
(49 bytes)cat(m,fill=27)
"diag<-"(x, y)
é semelhante aodiag(x) <- y
. O valor não está atribuído a uma variável, mas retornado.> <> ,
46 4442 bytesExperimente online!
Explicação
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
fonte
Haskell ,
66 65 58 57 4543 bytesAgradecemos a @nimi e @maple_shaft por salvar
1214 bytes.Experimente online!
fonte
<$
em vez de replicar:(' '<$[1..(fromEnum n-97)])
(' '<$['b'..n])
.f=
.['a'..'z']>>= \n->(' '<$['b'..n])++[n,'\n']
.PHP, 23 bytes
Nota: usa a codificação IBM-850.
Execute assim:
Explicação
Crie uma matriz de todos os caracteres do alfabeto, junte-o a uma guia vertical como cola.
fonte
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' + N
paraN = 0..25
.Anotado:
fonte
RProgN 2 , 5 bytes
\ 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.
fonte