O programa deve imprimir o alfabeto quatro vezes: primeiro na ordem alfabética normal, segundo na ordem de um teclado qwerty, terceiro na ordem de um teclado dvorak e, finalmente, na ordem alfabética inversa. A saída deve se parecer com isso:
abcdefghijklmnopqrstuvwxyz
qwertyuiopasdfghjklzxcvbnm
pyfgcrlaoeuidhtnsqjkxbmwvz
zyxwvutsrqponmlkjihgfedcba
A saída não diferencia maiúsculas de minúsculas e você pode adicionar ou omitir novas linhas ou espaços onde desejar.
O problema : o programa deve ter menos de 104 caracteres ou, em outras palavras, menor que o comprimento do alfabeto multiplicado por quatro.
Aceitarei a resposta com o código mais curto, a menos que veja algo realmente inteligente ou interessante com o qual estou mais impressionado.
EDIT: Aceitarei a resposta mais curta na quarta-feira, 27/04/2011.
EDIT2: E o vencedor é (como sempre) Golfscript em 64 caracteres! O segundo lugar , atrás apenas de três caracteres, também está em Golfscript, com 67 caracteres, seguido por Bash em terceiro lugar com 72 caracteres.
Mas havia alguns outros que eu queria mencionar, como este , que, dependendo da sua definição, usava apenas 52 "caracteres", e este onde ele o escreveu em um idioma criado por ele.
Havia algumas pessoas que quebrou uma regra não escrita e não se qualificam, mas vou mencioná-los apenas para a sua maneira de pensar sem a caixa.
fonte
Respostas:
Python 2, 97 caracteres
Classificar QWERTY e converter de volta da lista em string é mais curto que o próprio alfabeto! *
Outra opção para gerar o alfabeto em menos caracteres que o próprio alfabeto:
Embora isso imprima uma lista de caracteres Python.
Não há muito a ser feito aqui no caminho da compactação de dados; encravar as letras em 5 bits salva apenas 39 caracteres, o que não é muito se você precisar desimpedi-las (e ainda precisar representar os bytes literalmente); parece que o zlib (apenas como exemplo) salva menos de 20 bytes; codificar a sequência como uma lista de deltas para a próxima letra ainda leva 5 bits para cada delta, porque o maior nessa sequência é -22:
* Embora apenas um pouco.
fonte
q="qwertyuiopasdfghjklzxcvbnm";a=sorted(q);print(*a,q,"pyfgcrlaoeuidhtnsqjkxbmwvz",*a[::-1])
PHP, 100 bytes
Conforme ISO 8859-1:
Para reproduzir de forma confiável,
fonte
Rubi 1.9,
88878480fonte
Bash, 82
fonte
Python,
9796 "caracteres"Usando o uso da palavra "caracteres" liberalmente, aqui está um python que usa caracteres unicode de 16 bits para codificar 3 caracteres normais cada. O programa tem um total de 96 caracteres, 35 dos quais são os caracteres unicode mais estranhos que eu já vi.
Não tenho certeza se o lixo unicode virá corretamente, então aqui está um programa python para gerar o programa python acima:
fonte
Bash, 72
EDIT: removido
tr -d
.Créditos: Alexander, Roger.
fonte
|tr -d ' '
, economizando 10 caracteres e fazer esta versão um líder no momento da escrita :-)Golfscript, 64 caracteres
Nota: também 64 bytes. Na verdade, jogar com as mudanças de base e Unicode parece contraproducente, porque
base
é uma palavra-chave muito longa.fonte
Windows PowerShell, 89
Não é particularmente bom, mas pelo menos mais curto que a sequência de saída:
Muito menor agora que vi que há um relaxamento no espaço em branco. E um pouco mais baixo ainda, se eu ignorar o caso que me é permitido.
fonte
)
lá. Deve ser 88.Golfscript,
76, 67 caracteresfonte
123,97>+
para gerar o alfabeto inicial.CI - 92 caracteres
O CI ("Compilador / Intérprete") é uma linguagem simples baseada em pilha que criei para o desafio "Autointerpretação de intérpretes" ( link para resposta ). Publiquei essa resposta cerca de duas horas antes do lançamento deste desafio. Não é um GolfScript (que ainda não aprendi a aprender), pois meu objetivo era tornar o intérprete curto.
Este programa deve ser passado para o
ci
intérprete através da entrada padrão. O intérprete trata os caracteres após o término)
como entrada para o programa. Meu idioma não suporta literais de string, então o stdin está tomando seu lugar.fonte
Python 2.7.X - 103 caracteres ironicamente ...
Como se vê, gerar o alfabeto em python requer mais caracteres do que codificá-lo. Assim como a importação do alfabeto. Às vezes é preciso amar uma linguagem centrada na legibilidade.
fonte
+
vez de,
e economizar esse espaço.C - 133 caracteres
Versão abreviada de Casey:
Espaços em branco:
Saída transposta
Aqui está uma versão que transpõe a saída, por diversão. 134 caracteres.
Espaços em branco:
Impressões:
fonte
i
como global e colocandostrcpy(...)
no primeiro bloco do loop for, você recebe 129. ainda demais.J
Minha primeira experiência com J. A idéia é simplesmente usar o número canônico (lexicográfico) da permutação necessária; infelizmente, isso requer mais caracteres do que codificá-lo. Mas se alguém pudesse encontrar alguma expressão aritmética (usando poderes e outros enfeites) produzindo os números mágicos, ela poderia ser reduzida.
fonte
Python, 90 caracteres unicode
execute em ideone - http://ideone.com/R2dlI ou codepad - http://codepad.org/lp77NL9w
fonte
Javascript
139121Novo:
velho:
fonte
alert((a=(q='qwertyuiopasdfghjklzxcvbnm').split('').sort()).join('')+q+'pyfgcrlaoeuidhtnsqjkxbmwvz'+a.reverse().join(''))
Lua - 111 caracteres
Bate C e C ++! :-)
Versão "inteligente" em Lua
129 caracteres
Espaços em branco:
fonte
C -
163135 caracteresIsso não atende aos requisitos, pois possui mais de 104 caracteres, mas foi divertido de fazer. Talvez alguém tenha algumas sugestões.
Isso é compilado no GCC 4.5.1 (outros não testados). Yay por omitir #includes, tipos de retorno e declarações de variáveis! A codificação física resultaria em um programa mais curto, mas isso não é divertido.
Versão em espaço em branco:
C -
124122 coxoAqui está a versão codificada lame, e ainda não faz o corte.
fonte
puts()
vez disso, use printf no segundo caso - 2 caracteres a menos.while
porputs(a);
no primeiro caso, deixando cair*p=a
; - 138 caracteres em vez de 163.puts
. Changed.PHP 88 bytes
fonte
J - 69 char
Explicação:
(,\:~) y
- Classifiquey
em ordem decrescente (\:~
) e acrescente (,
) isso ay
.x (,~|.) y
- Inverta (|.
)y
e anexe-o à frente dex
.x F&G y
- Executar(G y) F (G y)
, ou seja, executarF
os resultados da aplicaçãoG
aos argumentos.Então, todos juntos, anexamos o alfabeto, ao contrário, às cordas Dvorak e QWERTY reversa, depois invertemos a QWERTY / alfabeto e colocamos na frente da Dvorak / alfabeto.
fonte
Bash, 64
Estou muito atrasado para a festa, mas tenho uma solução de 64 caracteres. O programa precisa ser salvo no disco para funcionar
Como funciona:
{a..z}
e{z..a}
são bastante auto-explicativos, mas basicamente isso apenas imprime todos os caracteres desse intervalo.$(sed 1d $0|base64)
gera o programa, ignora a primeira linha e passa-o através de um codificador base64 (como outros exemplos fizeram).O motivo é mais curto que outros exemplos semelhantes ...
... é porque os
{a..z}
intervalos são mais curtos que as codificações base64, então eu só preciso codificar base64 metade da string. E como estou lendo os dados binários do arquivo, em vez de armazená-los em uma string, não preciso escapar de nenhum caractere no código.Como recriar este script:
Se o código não copiar / colar corretamente do Stack Exchange para o seu editor de texto, execute o seguinte na linha de comando (independente de shell):
Então, para executar:
fonte
05AB1E , 25 bytes
Experimente online!
Explicação
fonte
C ++
É meio triste quando a maneira mais curta de fazer algo em um idioma é codificá-lo.
fonte
std::cout
é mais curtousing namespace std
e você pode pularvoid
.J (77)
Raspou 3 caracteres usando uma variável:
Raspou mais 2 caracteres usando uma abordagem de nível de valor:
fonte
Haskell (95)
Perl (51)
Não existe uma regra que diga que não posso.
fonte
Q (68)
Saídas:
Tentou encontrar uma melhoria na codificação embutida nos dois do meio, mas não apresentou um.
fonte
K - 69 char
Explicação:
26#a:
- Atribua os dois layouts de tecladoa
e, em seguida, pegue os 26 primeiros caracteres.b:a@<
- Classificara
e atribuir isso ab
:<
fornece a permutação para uma classificação crescente e@
permite indexara
para classificá-la.b,a,|
- Anexe em uma linha eb
, em seguidaa
, inverta (|
) deb
.fonte
Pyth, 57
Alfabeto, string, alfabeto invertido. G é o alfabeto. A impressão está implícita.
fonte
Dyalog APL , 60 bytes
Impressões:
O que é permitido de acordo com o OP:
fonte
Gelatina, 36 bytes (não concorrente)
Experimente online!
Explicação:
fonte
05AB1E ,
6059 bytesExperimente online!
AÂ
- empurra o alfabeto bifurcado."qwertyuiopasdfghjklzxcvbnm""pyfgcrlaoeuidhtnsqjkxbmwvz"
- Empurra qwerty e drovak.»
- Imprime a pilha.05AB1E , 57 bytes (se você não se importa com aleatório \ n)
Experimente online!
fonte
""
por uma nova linha.