O desafio é simples:
gerar uma palavra.
Especificações:
- A palavra deve ser pronunciável.
- Isso é definido como "alternando entre uma consoante e uma vogal".
- Uma consoante é uma das seguintes letras:
bcdfghjklmnpqrstvwxz
- Uma vogal é uma das seguintes letras:
aeiouy
- O Word deve ser gerado aleatoriamente.
- As palavras devem poder conter todas as consoantes e vogais. (Você não pode usar apenas
bcdf
consoantes eaei
vogais.) - O Word deve conter 10 letras.
- O código mais curto (na contagem de caracteres) vence.
code-golf
random
natural-language
generation
Maçaneta da porta
fonte
fonte
echo buxitiwymu
está em conformidade tecnicamente com a especificação. Garanto-lhe que gerei a palavra aleatoriamente: Py
como uma vogal, onde você pode usarq
ex
, e quando você pode usar combinações de duas letras comong
ouea
Respostas:
GolfScript, 32 caracteres
Execute-o online .
fonte
Ruby: 56 caracteres
Exemplo de saídas:
fonte
'aeiouy'.chars
seria um caractere mais curto.TypeError: can't convert Enumerator into Array
Python, 81
Boa sorte em pronunciá-los.
fonte
:P
python grc.py | say
na minha máquina. Obrigado pela ideia.COBOL, 255
Então, eu estou aprendendo COBOL no momento. Usou essa pergunta como alguma prática. Tentei jogar golfe.
É 255 sem o espaço em branco à esquerda e 286 bytes com.
Pelo que vale a pena, isso é executado no Microfocus COBOL para VS2012, e não tenho idéia se será executado em outro lugar.
fonte
APL (34)
fonte
JavaScript, 74
Não gera todas as combinações, mas acho que todas as consoantes e vogais aparecem.
JavaScript, 79
Versão mais "aleatória".
fonte
^0
?Math.random
dá um float, precisamos de um número inteiro.^0
trunca o número^
operador em JavaScript antes e menos ouvi falar em usá-lo para truncar um float. Obrigado!^
Ruby:
7066 caracteresExemplo de execução:
fonte
10.times
por um char a menos.*10
->*4
, pule*3
,rand 60
->rand 20
e você salvou 3 caracteres.R: 105 caracteres
fonte
J (51)
fonte
Processamento,
100999387Após uma inspeção mais minuciosa da questão, vejo que ela não requer nenhuma saída. Eu ajustei isso de acordo.
fonte
Objetivo-C, 129
Com a ajuda de Daniero
(Adoro usar o operador tende a (->)
fonte
Java AKA, a linguagem mais detalhada já criada, 176 com a ajuda da maçaneta da porta, Daniero e Peter Taylor (obrigado pessoal!)
Ungolfed:
}
fonte
String a[]
paraString[]a
(-1 caracteres), alterew W = new w();
paraw W=new w();
(-2 caracteres)f
e usei%2
. Além disso, ofor
loop pode ser encurtado, e você pode colocar as duas strings dentro do operador condicional (também, não há necessidade de parênteses aqui) e usá-lascharAt
externamente. Aqui está a coisa toda, 195 PERSONAGENS, 38 SALVO :import java.util.*;class w{public static void main(String[]a){Random r=new Random();for(int i=0;++i<11;)System.out.print((i%2>0?"bcdfghjklmnpqrstvwxz":"aeiouy").charAt(r.nextInt(6+(i%2)*14)));}}
Javascript, 85
Se executado a partir do console, a saída é mostrada. A exibição explícita seria adicionada
alert(s)
em 8 caracteres, ainda mais curta que as outras soluções JS.Obrigado C5H8NNaO4 e Howard!
fonte
~~(###)
você pode escrever o###|0
que economiza 4 caracteres.Javascript,
1351229686 caracteresfonte
PHP, 100 caracteres
fonte
Ferramentas Unix: 73 bytes
E não garantido tempo de execução :)
O único problema é que a string gerada começará com uma "vogal" toda vez.
(edit: alterado
' '
para''
no args of paste) (outra edição: -P removido das opções grep, graças ao manatwork )fonte
grep
parâmetros. Eu recebi "do e ap ag ak".-a
que seria o suficiente.-P
é esse. Parece que o homem adverte sobre seu status altamente experimental por um motivo. (grep
2.16) Mas de qualquer maneira, funciona bem sem-P
.-P
em primeiro lugar. Vou editar minha resposta.tr -d \\n
é mais curto para juntar as linhas.Pitão, 26 caracteres
Você pode experimentá-lo no compilador online aqui.
Alguém postou um desafio muito semelhante, mas foi fechado depois que eu fiz uma solução. Eu não percebi, mas essa questão é anterior à criação de Pyth. Enfim, aqui está o detalhamento:
Toda vez que o loop é executado, J passa de uma lista de consoantes para uma lista de vogais. Dessa forma, podemos escolher uma letra aleatória de J de cada vez.
Pode haver uma maneira de inicializar J no loop ou remover as atribuições explícitas do loop, mas ainda não tive sucesso.
fonte
APL
3026A explicação é muito semelhante à versão anterior abaixo, apenas reordenada um pouco para resolver a solução.
Nota: ⎕IO está definido como 0
Explicação:
Tryapl.org
fonte
('AEIOUY'∪⎕A) ≡ (∪'AEIOUY',⎕A)
mas é um byte mais curto.⎕A
salvar outro byte:,('EIOUY'∪⎕A)[6(|,+)⍪5?20]
PHP 79 bytes
Bastante conciso.
fonte
C: 101
fonte
Javascript,
10487jogava um monte de coisas desnecessárias e simples, ainda não tão legais quanto as de copys
Ah, e esse acabou de aparecer durante o golfe: "dydudelidu"
Agora eu tentei um usando os 2 caracteres de uma só vez. Acontece que é quase o mesmo que o segundo dos copys, então não posso contar, também aos 79.
a="";for(e=5;e--;)a+="bcdfghjklmnpqrstvwxz"[m=0|20*Math.random()]+"aeiouy"[m%6]
fonte
Braquilog , 9 bytes
Experimente online!
Dá saída como uma lista de letras através da variável de saída.
fonte
F # , 166 caracteres
fonte
K, 40 bytes
5?"abc"
irá gerar 5 letras aleatórias a partir da string especificada.5?/:
irá gerar 5 letras aleatórias de cada uma das strings à direita, produzindo duas listas.+
transpõe essas duas listas, fornecendo uma lista de tuplas com um caractere aleatório da primeira lista e, em seguida, uma da segunda lista.,/
é "arrasar" - fundir todas essas tuplas em sequência.O K5 pode fazer isso em 33 bytes, construindo o alfabeto de maneira mais inteligente e usando "exceto" (
^
) para remover as vogais, mas o K5 é novo demais para ser legal nesta questão:fonte
R, 83 bytes
Gere todas as sequências consoantes de vogal possíveis em uma matriz e, em seguida, faça uma amostra aleatória de 5 delas, produzindo uma palavra de 10 letras.
fonte
05AB1E , 10 bytes
Experimente online ou impriman quantidade de palavras aleatórias .
Explicação:
Bem direto:
fonte
Gelatina , 13 bytes
Explicação:
Experimente online!
fonte