Inspiração : em 1939, um homem chamado Ernest Vincent Wright escreveu um romance chamado Gadsby sem usar a letra 'e'.
Sua tarefa é escrever um conjunto de (até 5) programas em qualquer idioma (que tenha uma sintaxe baseada em texto *) para gerar todas as 26 letras do alfabeto em ordem. No entanto, para cada vogal aeiou, pelo menos um dos programas não deve incluir nenhuma ocorrência da vogal.
Então deve haver
- um programa que não usa ' a ' ou ' A ' em nenhum lugar da sintaxe do programa.
- um programa que não usa ' e ' ou ' E ' em nenhum lugar da sintaxe do programa.
- um programa que não use ' i ' ou ' I ' em nenhum lugar da sintaxe do programa.
- um programa que não usa ' o ' ou ' O ' em nenhum lugar da sintaxe do programa.
- um programa que não usa ' u ' ou ' U ' em nenhum lugar da sintaxe do programa.
Todos eles devem produzir abcdefghijklmnopqrstuvwxyz
.
O vencedor será a solução em que a duração de todos os programas é a mais curta.
* como a restrição não seria um grande desafio para Piet ou Whitespace
Classificações atuais (06 Mar 2014):
- A PL : 11
- B cinzas : 31
- E efunge : 26
- B urlesco : 12
- B rainfuck : 38
- C : 84
- C # : 278/149
- Atolamento C : 6
- C lojure : 81
- D c : 18
- E rlang escript : 75
- F # : 96
- Ator F : 264
- F emissão : 21
- F or : 46
- G olfscript : 8
- H askell (intérprete) : 12
- H TML : 50
- J : 17
- J ava : 137
- J avascript : 92
K : 9
K otlin : 112
- L UA : 57
- M arbelous : 96
- M ATLAB : 11
- P erl 5 (linha cmd) : 23
- P erl 5.10+ : 23
- P erl : 101
- P HP : 31
- P ostscript : 45
- P owershell : 62
- P concha ython : 48
- P jthon : 83
- R : 36
- R ebmu : 15
- R uby : 20
- R UBY 1,8 : 18
- S cala : 55
- S CLI idade : 42
- T cl : 49
- T -SQL : 120
- V BA : 70
code-golf
string
restricted-source
alphabet
shamp00
fonte
fonte
Respostas:
Golfscript - 8 caracteres
fonte
91,65>+
vez disso.Brainfuck, 38 caracteres
Obviamente, não há vogais (ou quaisquer outras letras) na sintaxe do cérebro .
fonte
++[[<+++>->++++<]>]<<<<++[->+.<]
PHP, 31 bytes
Não a, e, i, o, u:
A sequência binária após o til tem a seguinte representação hexadecimal:
Como existe um placar de idiomas, também posso enviar este:
Ruby (v1.8) 18 bytes
fonte
php -r 'echo("<?=~\x9e\x9d\x9c\x9b\x9a\x99\x98\x97\x96\x95\x94\x93\x92\x91\x90\x8f\x8e\x8d\x8c\x8b\x8a\x89\x88\x87\x86\x85;");' > script.php
. O comando para executá-lo:php -d error_reporting=0 script.php; echo
.Rubi (
2422)Edit: parênteses podem ser omitidos, 2 caracteres a menos:
24 caracteres em Ruby:
Como funciona
$>
é um alias para$stdout
ouSTDOUT
. Você pode escrever usando o<<
operador O termo'%c'*26
repete a string'%c'
26 vezes. O%
operador é definido em String como um alias parasprintf
, portanto,str % val
é equivalente a escreversprintf(str,val)
. O caractere de formato%c
é usado para transformar um valor de caractere em um caractere. Esses valores vêm de[*97..122]
onde cria uma matriz contendo os valores de 97 a 122. Et voilá!fonte
<<
mas tinha esquecido$>
.$>
antes, mas eu imaginei que tinha de haver algum apelido dólar-variável para$stdout
que ninguém pode lembrar :)$><<[*"`".."z"][1,26]
(nota: isso só funciona no Ruby 1.8)p [*"
".." z "] [1,26]` é ainda mais curto. 'Array#to_s
é o mesmo queArray#inspect
, enquanto em 1.8 éArray#join
- então em 1.9 a saída é em["a", "b", "c", "d", "e", ...]
vez deabcdef...
. Pelo mesmo motivo,p
não pode ser usado (ele invocainspect
seus argumentos, em vez deto_s
).Pitão , 1 Personagem
Pyth pré-define certas variáveis. G é predefinido como o alfabeto em minúsculas. Pyth também imprime implicitamente cada linha com um valor de retorno razoável.
fonte
JavaScript (100)
Não 'aeou':
Não 'i':
fonte
\x##
códigos, mas não tinha certeza se eles eram válidos em JavaScript.alert
,confirm
,prompt
,console.log
, edocument.write
. Simplesmente declarar uma string literal não a produz como saída quando executada. Caso contrário, você estaria correto, e eu teria usado isso.K, 9
K, 10
K, 14
fonte
(@$`)$97+!26
$
leva símbolos em vez de cordas para controlar o tipo convertidos em: `c $ 97 + 26!J,
26231716 caracteresDepois de mais ou menos uma hora remexendo na gaveta de roupas íntimas de J, finalmente encontrei uma maneira de eliminar os verbos
a.
eu:
.Anteriormente:
com agradecimentos a randomra pelo
#\
truque.fonte
#\
vez de+/\
.R, 17 + 19 = 36 caracteres
não ae (17):
não (19):
fonte
Bash (38)
Sem vogais.
fonte
[[ ! -d "/bin" ]] && mkdir "/bin"; sudo cp "/usr/local/bin/bash" "/bin/bash"
/bin/sh
é bash. Em seguida, o código pode terminar com/*/sh
(36 bytes). Mas eu não encontrei um sistema em que isso funcione. No Debian, / bin / sh não é bash. No meu Mac antigo, / bin / sh é o bash 2.05b0. (1), mas esta versão é muito antiga e não se expande{a..z}
.C,
90 8884 caracteresCompile usando
gcc -nostartfiles
fonte
_start
e_exit
são uma boa maneira de se locomovermain
. Mas se uma linha de compilação fora do padrão está OK, por que não-DX=main
?-DX=main
parece pior do-nostartfiles
que (para mim). É uma maneira de mover uma parte do código fonte para a linha de compilação e é o mesmo que escrever#define X main
no código fonte, o que seria claramente inválido. Considerando que-nostartfiles
não é uma maneira de renomearmain
, mas remove a restrição de que deve haver umamain
função (chamada_start
). Por outro lado, usando-nostartfiles
o faz sentir um pouco como fazer batota, especialmente uma vez que contém 4 dos 5 "maus" letras :)-nostartfiles
até-DX=main
é pequena e, por que não salvar alguns caracteres com-DX=main()
e assim por diante. Mas não consigo encontrar uma solução que não envolva nada suspeito.-Dmn=main
. A função CA deve ter umamain
função, a menos que-nostartfiles
seja usada uma opção não padrão .Golfscript, 10 caracteres
fonte
Ruby, 20 caracteres
97.chr
é uma maneira elaborada de dizer 'a'..
especifica um intervalo?z
é uma maneira mais curta de dizer "z"[*range]
faz com que o intervalo divida seus valores em uma matriz*''
é o mesmo quejoin('')
; cola todos os valores da matriz juntos.$><<
Perlicism: imprime em stdout.fonte
?z
não é uma abreviação para'z'
, mas sim para122
. Isso, no entanto, funciona para 18 bytes:$><<[*97.chr..'z']
97.chr
com?\x61
a -1 byte.dc:
1817 caracteresE morreu um personagem corajoso.
fonte
x
registro, o que torna a minha solução mais ofuscada.97[dP1+dBD>m]dsmx
, 17 caracteres. Aparentemente, você sempre pode inserir caracteres hexadecimais no controlador de domínio, mas como a base de entrada é dez, o valor éB*10+D=11*10+13=123='{'
e não 0xBD.Powershell,
7562 caracteresEditar: usado -f (String.Format) e indexação de matriz para reduzir significativamente o comprimento do código.
Como funciona
gm
é um alias paraget-members
, portanto,1|gm
retorna membros do valor1
, que é doSystem.Int32
tipo:"$(1|gm)"
retorna uma representação em string da lista acima, que contém todas as vogais necessárias para completar o alfabeto: " int C omp ar eTo (System.Object val ue) ..."fonte
($x=''+$(gv))[8]+"bcd$($x[4])fgh$($x[25])jklmn$($x[26])pqrst$($x[19])vwxyz"
que também é 75 caracteres :)''+$(gv)
por"$(gv)"
você, obtém($x="$(gv)")[8]+"bcd$($x[4])fgh$($x[25])jklmn$($x[26])pqrst$($x[19])vwxyz"
74 caracteres. Agradável!BASH: 40 caracteres
aeiou
usado.fonte
Haskell, 12
Ou isso é trapaça? :)
fonte
Parse error: naked expression at top level
MATLAB, 12 + 20 = 32 caracteres
Não eiou (12):
Não aeou (20)
fonte
No Perl,
também é possível sem vogais
mas muito mais difícil do que no Ruby etc. Isso usa um total de 101 caracteres, mas não requer a chamada de linha cmd (perl -e).
=> Resultado: abcdefghijklmnopqrstuvwxyz
Em contraste com a solução PHP de 'aparência semelhante' , este é um programa real . O programa decodificado lê:
Após a codificação para valores octais, outro intérprete perl é chamado durante a execução pelos `` (backticks). Os backticks consumiriam a saída, portanto, são impressos em STDERR.
A codificação é feita pelo sprintf:
e a codificação avaliada é o programa publicado (dentro de backticks):
Saudações
rbo
fonte
Perl 5, 22 caracteres
(1) contém apenas
a
ee
, 10 caracteres (requer 5.10+, executados na linha de comando):(2) contém apenas "i", 12 caracteres:
Se não for permitido executar a partir da linha de comando, você precisará usar
use 5.01;say a..z
o primeiro, com um custo de 7 caracteres e mais uma vogal, mas ainda não possui um 'i', resultando em uma entrada válida no total de 29 personagens.fonte
use
, embora possa substituí-lo pela opção de linha de comando-M5.01
e cortar mais dois caracteres.-p
opção em que 2 caracteres são adicionados à contagem. Olhando para essa meta questão, você poderá usar-M5.010
gratuitamente a opção se essa opção ajudar a diminuir o seu código.print
declaração pordie
raspar 2 caractereschr 97..z
pode ser substituídov97..z
por 3 bytes.APL (Dyalog) (
1113)Você pode precisar de uma fonte APL. Supõe-se que seja Unicode, mas não há visualização ...
Somente
U
(e talvez⍳
contando as vogais gregas):(Isso é
[quad]UCS 96+[iota]26
:)Apenas
A
:fonte
U
é uma vogal ...Python 2, 83
Não a , i , o ou u ; 47 :
Não e ; 36 :
fonte
Python 2, 175 caracteres
Nota: imprime na saída diferente da resposta python anterior .
Usa 'e', mas não a, i, o, u -
63615965(corrigiri
movimento incorreto para minúsculas) 115 caracteres (livrar-se dos espaços).(Originalmente, usava impressão com uma vírgula que inseria um espaço; também imprimia letras maiúsculas. Agora via requisitos rigorosos para 'abcdefghijklmnopqrstuvwxyz' como saída; adicionando instrução de importação).
Não usa 'e' (usa a, i, o, u; pode se livrar trivialmente de a, u para pequenas extensões) -
6160 caracteresfonte
i
, então deve ser:exec('f%cr x %cn r%cnge(65,91):pr%cnt chr(x),'%(111,105,97,105))
e voltamos a 64 caracteres.exec('fr%cm sys
Eump%crt*\nf%cr
...exec('...')
JavaScript (154)
(1) Contém apenas
i
(99 caracteres):(2) Contém apenas
aeou
(55 caracteres):Demonstração: http://jsfiddle.net/SvN5n/
fonte
$("h\x65\x61d")[0]["\x6fwn\x65rD\x6fc\x75m\x65nt"]["l\x6fc\x61t\x69\x6fn"]="j\x61v\x61scr\x69pt:\x65v\x61l(`f\x6fr(s='',l=65;l<90;l++){s=s+Str\x69ng.fr\x6fmCh\x61rC\x6fd\x65(l);};c\x6fns\x6fl\x65.l\x6fg(s)`)"
208chars, nãoaeoui
usado no código. Funciona no navegador Chrome.Pitão
159117Conforme mencionado no outro post do python, a parte mais difícil é lidar com o fato de que a única maneira de gerar saída é usar
print
orsys.stdout.write
, ou ambos contendo i. É necessário fazer isso com 2 programas (que são independentes e não usam o shell interativo python para criar a saída):Este usa apenas i por 55 caracteres:
Este evita o uso de i por 104 caracteres:
EDIT: avanço maciço !!! Eu estava pensando que o uso de eval (ou mesmo executivo) era um truque e não estava realmente no espírito da competição. De qualquer forma, vasculhando os componentes internos, encontrei uma maneira de obter a função de impressão sem usar i. Então, aqui está o programa evitar-i (e o) para 68 caracteres:
Mas como isso também evita o, isso pode ser associado a um que evita apenas a, e, u por 49 caracteres:
fonte
vars(vars().values()[0]).values()[47]
Rubi
1961644447fonte
p
gera aspas ao redor do alfabeto?p x
é equivalente a ligarputs str.inspect
, o que resulta em aspas circundantes.$><<
, então +1 para isso e parabéns; sua versão é muito melhorRuby, 22
Nenhuma letra :)
fonte
VBA: 76 força bruta, 116 sem 'trapaça' (98 se novas linhas forem aceitáveis na saída)
Funções padrão
Graças à verbosidade do VBA, não acredito que isso possa ser feito sem 'E' ou 'U' em um módulo de código padrão ...
Funções imediatas
Correndo com a suposição de mellamokb, aqui está sem a declaração de função (deixando de fora
SUB
eFUNCTION
) ( 116 caracteres , 98 se novas linhas são aceitáveis na saída):O texto abaixo não usa 'e' nem 'a' ( 43 caracteres , formatados para serem executados na janela imediata):
O texto abaixo não usa 'i' nem 'a' nem 'u' ( 33 caracteres , formatados para serem executados na janela imediata):
O texto abaixo não usa 'a' nem 'o' nem 'u' ( 40 caracteres , formatados para serem executados na janela imediata):
Se caracteres de nova linha forem permitidos na saída, os exemplos acima poderão ser mais curtos:
( 37 caracteres )
( 27 caracteres )
( 34 caracteres )
Força Bruta
Executando com a resposta Ruby do w0lf
( 76 caracteres , formatados para serem executados na janela imediata):
fonte
Sub..End Sub
fora, uma vez que a maioria dos outros programas não inclui definição de função.Sub
:)print
para,?
pois funciona na janela imediata.Rebmu : 15 caracteres
A leitura do Rebmu sempre requer um pouco de silêncio para começar:
Então, ajuda a expandir as abreviações:
Seria mais óbvio usar um caractere literal para o predecessor de letras minúsculas a:
Mas isso não "mingau", portanto, converter uma palavra literal em um caractere passa para o mesmo objetivo. O que eu mais gosto, como na maioria dos Rebmu, é que ele tem o espírito de um programa sensato, apesar da compressão. (A resposta Golfscript é mais curta, mas não é mapeada para a maneira como um programador normalmente pensaria ao codificar.)
fonte
<> <(Peixe) - 22 caracteres
Como <> <usa o 'o' para imprimir um personagem, esse desafio parece impossível. Felizmente, o peixe pode alterar seu próprio código em tempo de execução. Isso me permitiu adicionar as instruções de impressão ao código.
Este código não usa nenhuma das vogais:
Você pode executar o código aqui
fonte