Escreva um programa ou função que produz esse texto exato, sem distinção entre maiúsculas e minúsculas:
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.
(Com base na música do alfabeto que muitas crianças americanas aprendem a ajudar a memorizar o alfabeto, embora editadas para maior compressibilidade.)
A saída deve ser exatamente igual à acima (novamente, sem distinção entre maiúsculas e minúsculas), mas pode conter espaços à direita em cada linha e / ou novas linhas à direita. Observe o período no final.
Isso é código-golfe, então o código mais curto em bytes vence.
code-golf
string
kolmogorov-complexity
ETHproductions
fonte
fonte
/(?=[HQTW])/
H, I, J, K, LMNO, P
?Respostas:
Vim,
42, 40 pressionamentos de tecla / bytesAgradecemos a Lynn e sua resposta impressionante do vim pela dica de pegar o alfabeto da ajuda.
Obrigado ao RomanGräf por salvar dois bytes!
Explicação:
Em seguida, movemos o final da linha com
$
, alteramos um caracterech
e inserimos um ponto.fonte
05AB1E , 16 bytes
Código
Explicação:
Usa a codificação CP-1252 . Experimente online!
fonte
Utilitários Bash + GNU, 36
Ideone.
fonte
echo {A..Y}, Z.|sed 's/[HQTW]/\n&/g'
?JavaScript (ES6),
6665 bytesDerrotar @ Nee era impossível ... Foi por isso que fiz. :-)
Golpeou 1 byte graças a um truque de @LevelRiverSt . O uso
String.fromCharCode
é de 7 bytes mais:Como funciona
Isso gera recursivamente cada caractere do alfabeto de
a
paray
, usando.toString()
. Uma vírgula é anexada após cada letra, mais uma nova linha se9568512>>i-9&1
for 1 ou um espaço caso contrário. Quando a recursão ultrapassa 34, ou sejaz
, para , a função simplesmente retorna"z."
.fonte
Python 2.7,
67 6663 bytesDennis salvou um byte.
fonte
exec
vez defor
deve salvar um byte.Geléia ,
1918 bytesObrigado a @Adnan por jogar fora 1 byte!
Experimente online!
Como funciona
fonte
JavaScript (ES6),
8074 bytesProvavelmente é possível encurtar isso com atob / btoa se você puder descobrir como usar a codificação ISO-8859-1. Editar: salvou 6 bytes graças a @RickHitchcock.
fonte
.join`, `
? Coloque barras invertidas antes dos backticks. (Sim, o comentário remarcação é diferente, suspiro ...)Pyke,
231917 bytesExperimente aqui!
fonte
R,
83bytesExperimente online!
Cria uma matriz de 3 linhas (uma com as letras, uma com vírgulas e outra com um espaço ou uma nova linha).
Edit : Obrigado Billywob!
fonte
cat(a,sep="")
salva alguns bytes:a=rbind(LETTERS,","," ");a[3,7+3*c(0,3:5)]="\n";cat(a[,-26],"Z.",sep="")
[-26]
onLETTERS
salva diretamente outro byte.CJam, 26 bytes
Intérprete online
fonte
Brainfuck, 117 bytes
As quatro primeiras linhas têm espaço à direita e o programa assume células de 8 bits. Experimente online!
(Lidar com a última linha é complicado ...)
fonte
Perl, 37 bytes
Créditos ao @Dom Hastings para esta solução (3 bytes mais curto que o meu, veja abaixo).
Executar com o sinalizador
-E
(ou-M5.010
):Minha versão anterior, 3 bytes mais (total de 40 bytes):
fonte
say+(map"$_, ".$/x/[GPSV]/,A..Y),"Z."
JavaScript (ES6),
6664 bytesRegex corresponde aos caracteres, mas não o retorno de carro; portanto, usando a substituição de regex, posso adicionar o "," a cada caractere.
Edit: Removidos 2 caracteres graças a ETHProductions
fonte
$1
para$&
.Queijo Cheddar, 70 bytes
Parece que não está ficando mais curto que isso. Eu fiz outras versões disso que usam métodos bastante interessantes, mas isso é o mais curto
Experimente online!
Explicação
O
@"
operador é usado para gerar seqüência de caracteres variada. Ele gera uma sequência iniciando do código de caracteres esquerdo para o código de caracteres direito.Por exemplo,
65
é o código de char paraA
e90
paraZ
. Fazer65 @" 90
geraria de A a Z ou o alfabeto.fonte
C,
11210281 bytesGraças a cleblanc e LevelRiverSt!
fonte
i,c,d;main(){for(c=65;c<91;++c){if(c-"GPSVZ"[i])d=32;else d=10,++i;printf("%c%c%c",c,c-90?44:46,d);}}
i,c;main(){for(c=64;++c<91;)printf("%c%c%c",c,44+c/90*2,c=="GPSVZ"[i]?++i,10:32);}
. Note que você pode ficar absolutamente nada entre a?:
de um operador ternário, mesmo várias expressões separadas por vírgulas (ela é avaliada como a última.)Brainfuck, 157 bytes
Experimente online
fonte
Ruby,
5654 bytesA primeira linha termina com uma nova linha literal.
Editar: salvou dois bytes substituindo
'A'..'Y'
por?A..?Y
.fonte
Vim, 32 bytes
26o<C-V><C-V>64,<Esc>r.V{g<C-A>8Jj9Jj3Jj.j4JcH<C-R>"
Deixa uma linha em branco no final, o que foi permitido, mas é estranho ser tão desajeitado. Pior ainda, estou terminando no modo de inserção. Eu já vi outras pessoas fazendo isso aqui, então acho que é permitido? Parece sujo.
26o<C-V><C-V>64,<Esc>
: O primeiro<C-V>
faz o segundo inserir literalmente. Os<C-V>64
s que isso deixa no buffer serão transformados em pontos de código ASCII e depois em letras. Vírgulas já estão em.r.
: Nunca mais chegará ao fim, o mesmo acontece.
agora.V{g<C-A>
: Usa incremento visual para transformar todos os64
s nos pontos de código ASCII das letras maiúsculas.8Jj9Jj3Jj.j4J
: A linha arbitrária se junta. O primeiro é em8J
vez de7J
porque estamos lidando com a linha em branco. Os3J
s repetidos são elegíveis para uma repetição de pontos.cH<C-R>"
: As pessoas geralmente pensami<C-R>
como uma pasta no modo de inserção, mas é mais como uma macro no modo de inserção. Coisas como<C-V>65
serão executadas como se digitadas e interpretadas como um ponto de código decimal. Isso deixa uma linha extra (permitida) no final e permanece no modo de inserção.fonte
PowerShell v3 +,
607867 bytesESTÁ BEM. Eu realmente li, entendi e acompanhei as especificações dessa vez. Promessa. : D
Pega a matriz
65..90
e faz um loop sobre cada elemento|%{...}
. A cada iteração, estamos construindo uma nova string usando concatenação, indexação e multiplicação.Primeiro, pegamos o número atual e o
char
convertemos para torná-lo uma letra ASCII. Isso é concatenado com outro caractere, com base na indexação na cadeia de caracteres,'.,'
quer estejamos90
ou não (ou seja, contabilizarZ.
enquanto o resto é vírgula). Essa é a sequência concatenada" "
para separar as letras em espaço e a multiplicação de sequência com"`n"
base no valor booleano para saber se o elemento atual é-in
a matriz especificada (ou seja, se precisamos concatenar em um caractere de nova linha). A sequência resultante é deixada no pipeline.Essas strings são encapsuladas em parênteses e
-join
agrupadas em uma nova string, que também é deixada no pipeline e implícitaWrite-Output
no final, imprime o resultado. Como temos`n
a string, ela é automaticamente convertida em novas linhas após a impressão.Requer v3 + para o
-in
operador. Tem um espaço à direita em cada linha, o que é bom para as especificações do desafio.Exemplo
fonte
PHP, 62 bytes
apenas para comparação 87 bytes
fonte
\n
."# (?=[HQTW])#"
e encurtar a substituição para os"\n"
mesmos bytes e tornar mais claro. Usar uma função obsoleta pode confundir iniciantes. E a ruptura física pode ser interpretada incorretamente em outros sistemas, exceto no Unix. Você pode publicá-lo como sua própria sugestão.MATL,
3829 bytes9 bytes salvos graças ao @Luis!
Experimente Online!
Explicação
fonte
R, 146 bytes
Explicação:
LETTERS
é predefinido para letras maiúsculas.A
f
função é concatenar o vetor x,
com adicionaly
(usado para novas linhas).O gato é o usado como ele imprime
\n
como novas linhas.f
é chamado nas letras para formar linhas e, em seguida, nas linhas novamente para formar toda a saída.Provavelmente golfable - eu não gosto das várias chamadas de f ...
fonte
CJam, 31 bytes
Explicação:
Experimente online
fonte
Julia, 71 bytes
Requer 0,5 ou superior para transmissão
.()
fonte
print
definição de função /? Por outro lado, não salvarjoin
em uma variável salva um byte.join
. Eu contei errado. A execução do programa retorna a sequência. Um programa que retorna uma string não é uma saída válida? (Ou é apenas as funções que estão autorizados a retornar coisas para contar como saída se assim for.f()=
É mais curto thantprint()
)f()=
ou()->
está bom - acho que a ideia é que as funções sejam atribuíveis e possam ser executadas várias vezes e, em contraste, isso seria um trecho de código.Cheddar, 57 bytes
Experimente online! Isso não é lindo? É um belo retângulo.
Duas substituições regex.
(65@"90)
é o alfabeto maiúsculo,.sub(/[GPSV]/g,"$0\n")
substituiGPSV
por si próprio e"\n"
,.sub(/[^Z\n]/g,"$0, ")
substitui todos osZ
caracteres não-nova linha e por si mesmo", "
e"."
adiciona uma final.
.fonte
Japonês, 24 bytes
Teste online!
Como funciona
fonte
Java,
116109105104Ungolfed:
fonte
||
até|
(-3); mudandoc==90
parac>89
(-1); mudando'.'
para46
(-1); e mudando'\n'
para10
(-2)."GPSV".contains(""+c)
vez dec==71|c==80|c==83|c==86
.q, 46 bytes
fonte
Retina, 43 bytes
A nova linha principal é significativa. Experimente online!
Esta é a primeira vez que uso o Retina, então qualquer dica de golfe é apreciada ...
fonte
Pitão, 25 bytes
Um programa que imprime o resultado em STDOUT.
Experimente online
Como funciona
fonte