O desafio
Sua tarefa é criar um programa ou função que produza o seguinte sem entrada:
a
bb
ccc
dddd
eeeee
ffffff
ggggggg
hhhhhhhh
iiiiiiiii
jjjjjjjjjj
kkkkkkkkkkk
llllllllllll
mmmmmmmmmmmmm
nnnnnnnnnnnnnn
ooooooooooooooo
pppppppppppppppp
qqqqqqqqqqqqqqqqq
rrrrrrrrrrrrrrrrrr
sssssssssssssssssss
tttttttttttttttttttt
uuuuuuuuuuuuuuuuuuuuu
vvvvvvvvvvvvvvvvvvvvvv
wwwwwwwwwwwwwwwwwwwwwww
xxxxxxxxxxxxxxxxxxxxxxxx
yyyyyyyyyyyyyyyyyyyyyyyyy
zzzzzzzzzzzzzzzzzzzzzzzzzz
Pontuação
Isso é código-golfe , então a resposta mais curta em cada idioma vence.
code-golf
string
kolmogorov-complexity
alphabet
SpookyGengar
fonte
fonte
Respostas:
05AB1E , 2 bytes
Experimente online!
Observe que isso gera como uma lista de linhas, conforme o OP explicitamente permitido. O link usa uma versão com impressão bonita (unida por novas linhas).
Como funciona
A
produz o alfabeto em minúsculas.ƶ
levanta o alfabeto (multiplica cada elemento pelo seu índice).»
junta-se por novas linhas.fonte
Python 2 , 36 bytes
Experimente online!
fonte
APL (Dyalog) ,
1285 bytes SBCS3 bytes salvos graças a @ngn
4 bytes salvos graças a @ Adám
As letras maiúsculas esclarecidas OP são válidas, assim como a saída como uma matriz de strings.
Experimente online!
Quão?
⌸
nos fornece todas as letras do⎕A
alfabeto com seus índices, entregues à função⍴⍨
com a letra como argumento à esquerda e o índiceescomo argumento à direita.⍴⍨
Resha ⍴ es seu argumento direito do comprimento fornecido pela sua esquerda.⍨
alterna a esquerda e a direita (portanto, o símbolo dela, parecendo o rosto de alguém lendo esta explicação).fonte
819⌶↑⎕A⍴¨⍨⍳26
↑
também.Haskell , 27 bytes
Experimente online! Retorna uma lista de linhas. (Obrigado a @totallyhuman por apontar que isso agora é permitido)
Explicação:
fonte
<$
repetir seu primeiro argumento n vezes, onde n é o comprimento do seu segundo argumento?brainfuck , 74 bytes
Experimente online!
Explicação
Experimente online!
fonte
Befunge-98 (FBBI) , 27 bytes
onde
é um caractere de substituição (ASCII 26)
Experimente online!
Usa letras maiúsculas e tem uma nova linha à direita.
Explicação
O código funciona armazenando um contador (0 inicialmente) e em cada loop:
1+
- Incrementa em 1:0\::
- Empurra as coisas para que a pilha fique assim:bottom [N, 0, N, N, N] top
'`j'@
- Verifica se o contador é maior que 26j'@
- Se for, pulamos e saímos'
usando@
j'@
- Caso contrário, executamos o'
, que envia o valor ASCII@
para a pilhaAgora a pilha fica assim:
bottom [N, 0, N, N, 64] top
+\
- Adiciona e depois alterna entre as 2 principais: nabottom [N, 0, (N+64), N] top
primeira vez, é ASCII 65 ouA
k:
- Duplicatas a segunda das principais(N+1)
vezes - agora há(N+2)
valores de(N+64)
na pilha (mais oN
e0
de mais cedo)$$
- Jogue fora os 2 principais valores - agora existem apenasN
valores de(N+64)
>:#,_
- Imprime cada valor máximo até chegar a0
- isso significaN
cópias de(N+64)
impressões$
- Joga fora o0
- Agora a pilha é apenasN
a,
- Imprime uma entradaE repete
Eu gosto de como usei os
@
dois para finalizar o programa e adicionar ao contador.fonte
Ruby ,
3230 bytes-2 bytes graças a @EricDuminil.
Experimente online!
fonte
27.times{|n|puts (n+96).chr*n}
estaria correto com 30 bytesJavaScript (ES6), 54 bytes
fonte
Excel VBA, 38 bytes
Usando a janela imediata. :)
fonte
"
BASH,
59 5440 bytesExperimente online!
THX. 5 bytes para @Justin Mariner
fonte
for
loop pode ser reduzido usando esta dica para 54 bytes: Experimente online!Ruby, 38 bytes
Retorna uma matriz de strings
-5 bytes graças a totallyhuman
* -11 bytes graças a um excelente golfe da Jordânia.
fonte
"\n"
nada;puts
faz isso por você (embora, para referência futura,$/
seja 2 bytes mais curto) - mas você pode se livrarputs
completamente disso se fizer disso um lambda que apenas retorna uma matriz de linhas. Você também pode mudara=[*?a..?z];puts a.map
paraputs (a=*?a..?z).map
ex*(a.index(x)+1)
parax*-~a.index(x)
. No total, são 38 bytes .(a=*?a..?z)
está dentro do bloco, não os argumentos que fazem parte do lambda.V , 9 bytes
Experimente online!
Hexdump:
fonte
MATL , 9 bytes
Experimente online!
Explicação
fonte
&
que não pode ser usado para duplicar e transpor2Y2
?&
, na verdade, não duplica e transpõe, embora às vezes produza o mesmo resultado. O que ele faz é modificar o número de entradas / saídas da próxima função. Por exemplo, se você usar&+
, a+
função agora pega uma entrada em vez de duas e gera a soma da entrada com ela própria transposta. Mas isso é só porque é assim que+
trabalho com 1 entrada (o mesmo para=
,>
e alguns outros)Python 3 , 37 bytes
Imprime uma nova linha inicial (o que é permitido).
Experimente online!
fonte
Geléia ,
54 bytesabuso sorrateiro de implementação de Python
-1 byte graças a Adám (a saída de uma lista de linhas foi permitida; como, agora, está escrevendo uma função em vez de um programa)
Um link niládico que retorna uma lista de strings, as linhas
(para imprimi-lo com as novas linhas como um programa completo, basta adicionar
Y
novamente ).Experimente online! (o rodapé chama o link como nilad (
¢
) e obtém a representação em Python do resultado (ŒṘ
) para maior clareza, pois o comportamento padrão do programa completo esmagaria o resultado como se fosseabbccc...
)Quão?
fonte
Øa×J
deve ser suficiente .MATL , 11 bytes
Experimente online!
Utiliza a multiplicação de difusão com uns para obter uma grande matriz quadrada 26x26 das letras desejadas. Em seguida, a parte triangular inferior é obtida e impressa implicitamente.
Também 11 bytes:
fonte
Javascript,
87 bytes, 72 bytes (Muito obrigado a @steenbergh)Minha primeira resposta também:
fonte
ind=1
no início, o pontoi<123
e vírgula após e o ponto e vírgula final. além disso, torne seu cabeçalho um pouco mais claro, declarando o idioma - bytecount, prefixado com um #.j
completamente:for(i=1;i<27;){console.log(String.fromCharCode(i+96).repeat(i++))}
Japonês ,
97 bytesProduz uma matriz de linhas
Tente
Explicação
Divida (
¬
) o alfabeto em minúsculas (;C
) em uma matriz de caracteres, mapeie sobre a matriz (Ë
) e repita (p
) o elemento atual pelo índice atual (E
) incrementado (°
) vezes.fonte
®p°Y
Pip , 9 bytes
Experimente online!
No pseudocódigo, isso é
onde
z
é predefinido para o alfabeto em minúsculas ei
é predefinido para 0.As soluções baseadas em mapas usam um byte extra porque precisam que o
-n
sinalizador seja exibido em várias linhas:fonte
Acc !! , 66 bytes
Experimente online!
Com comentários
fonte
Haskell , 31 bytes
-12 bytes graças a nimi.
Experimente online!
Este não é um trecho, é uma função nula (que não aceita argumentos) que gera uma lista de linhas permitidas devido a esse meta consenso .
fonte
R , 38 bytes
Uma resposta relativamente desinteressante. Itere
i
de 1 a 26, imprima ai
letra th dosi
tempos do alfabeto (com uma quebra de linha implícita).Experimente online!
Uma abordagem mais interessante pode ser usar algo como o seguinte:
Isso nos dá todas as letras na quantidade certa, mas não há quebras de linha. Talvez alguém mais esperto que eu possa descobrir uma maneira de usá-la para obter uma resposta mais eficiente.
fonte
rep(letters, 1:26)
é muito mais curto ...Perl 5 , 19 bytes
Experimente online!
fonte
Ferrugem , 82 bytes
Eu esperava que fosse muito mais curto, mas a conversão / conversão explícita entre tipos requer muitos bytes :(
Experimente online!
fonte
PHP,
4746 bytesou
Corra com
-nr
ou experimente online .fonte
J ,
1817 bytesExplicação:
Experimente online!
fonte
Perl 6 ,
2423 bytesTente
Tente
fonte
Oitava ,
2524 bytesExperimente online!
Economizei um byte graças a Giuseppe, que me informou que o OP permite letras maiúsculas.
Explicação:
Crie um vetor
x
com os valores ASCII do alfabeto maiúsculo e transponha-o. Adicione o negadox
(assim, 26 zeros, em um vetor de linha, para criar uma grade com (os valores ASCII de):Pegue a matriz triangular inferior e converta em caracteres concatenando com a sequência vazia.
fonte
C (gcc) ,
48 bytes50 bytesVersão re-executável, conforme cleblanc e Steadybox nos comentários abaixo.
Experimente online!
fonte
s[9];main(i){for(;i<27;)puts(memset(s,i+95,i++));}
ainda bate a minha resposta por alguns bytes :)s[9];main(i){for(;puts(memset(s,i+95,i++))-27;);}
Japonês,
171611 bytes-5 bytes graças a Oliver
Na ISO-8859-1
Não é a melhor pontuação, mas ainda sou um novato. Todas as sugestões são bem-vindas.
Lista de linhas de saída, conforme OP permitido. O link contém mais 3 bytes para novas linhas.
Experimente online!
fonte
1oBÊÄ
pode ser substituído por26õ
. Você pode salvar mais alguns bytes fazendo algo como;26ÆCgX pXÄ
o
leva of
argumento ... #