Sua tarefa é gerar uma palavra sem sentido razoavelmente pronunciável com o número especificado de 'sílabas'. Cada vez que o programa é executado, possivelmente resulta em uma palavra sem sentido diferente.
Pronounceability
Uma palavra pronunciável é composta de sílabas, que por sua vez são constituídas por um grupo de vogais que possivelmente está imprensado entre dois grupos consoantes. Nem todos os sons são pronunciáveis em todas as posições e, como isso depende do idioma, usaremos padrões compreensíveis para os falantes de inglês
Iniciando grupos consoantes:
b c d f g h j k l m n p r s t v w y z bl br ch cl dr dr fr gh gl gn gr kn ph pl pr qu sc sh sk sl sm sn sp st th tr wh wr sch scr shm shr squ str thr thr
Grupos de vogais:
a e i o u ae ai ao au ee ei eu ie ie io oa oe oi oo ou ue ui
Grupos consoantes finais:
bcdfglmnprstxz bt ch ck ct ft gh gn lb ld lf lk ll lm ln lp lt mb mn mp nk ng nt ph pt rb rc rd rf rg rk rl rm rn rp rt r r r r r r r r r r r r r r r r sh sh sp sp st zz lch lsh lth rch rsh rst rth sch tch
Combinando sílabas
Os grupos consoante inicial e final são opcionais em geral, no entanto, você não pode colocar uma sílaba final com uma vogal imediatamente antes de iniciar uma vogal.
aviso Legal
No interesse da simplicidade, certas palavras em inglês não podem ser geradas dessa maneira, como vácuo, xilofone, mnemônico, pterodátilo, bonito, blá, eles, uau e o plural.
Visão geral
Possíveis padrões de sílabas usando esta chave:
(SC) = consoante inicial; (V) = grupo de vogais; (CE) = consoante final
Para uma sílaba:
- (SC) (V) (CE)
- (V) (CE)
- (SC) (V)
- (V)
Com duas sílabas:
- (SC) (V) (CE) (SC) (V) (CE)
- (SC) (V) (CE) (SC) (V)
- (SC) (V) (CE) (V) (CE)
(SC) (V) (CE) (V)
(SC) (V) (SC) (V) (CE)
(SC) (V) (SC) (V)
(V) (CE) (SC) (V) (CE)
- (V) (CE) (SC) (V)
- (V) (CE) (V) (CE)
(V) (CE) (V)
(V) (SC) (V) (CE)
- (V) (SC) (V)
... e assim por diante
Exemplos
1 sílaba
- charst
- apertado
- shriegn
- eess
- shue
- oo
- cheezz
2 sílabas
- jazzcrap
- whylprog
- comendo
- umba
- ola
- ter
- ingsoc
- greespheurz
- bleuspoo
3 sílabas
- brokiompic
- squirdshlicker
- capital
- opengtrass
- repensar
- grande irmão
- phoebliaptmoo
- skolfblauquent
4 sílabas
- strawishoepick
- patchworkzombie
- prearneajoomie
- slephotoschou
- doubleplusgood
Codificação
Entrada: um número inteiro para o número de sílabas a serem geradas
Saída: uma palavra (provavelmente) sem sentido, com muitas sílabas
Regras
- É necessária alguma forma de aleatoriedade (psuedo). Todas as combinações de sílabas devem ser (teoricamente) possíveis de gerar, embora a distribuição não precise ser uniforme.
- Você pode supor que seu gerador é aperiódico, portanto, não precisa ser matematicamente possível gerar todas as palavras possíveis (pode não ter um período suficientemente longo na realidade) e você não precisa fornecer nenhum tipo de prova de que seu gerador pode, de fato, produzir todas as palavras possíveis.
- Seu gerador deve ser capaz de produzir pelo menos 255 valores distintos; portanto, você não pode simplesmente retornar 4 toda vez que o gerador for chamado.
- O mais importante é que, de alguma forma, você inclua todos os grupos de letras acima em seu código, que cada grupo de letras tenha uma probabilidade diferente de zero de ser escolhido e cada padrão de sílaba tenha uma probabilidade diferente de zero (se fornecida com verdadeira aleatoriedade).
- Você deve suportar até 16 palavras de sílaba
- Além das regras de combinação de sílabas, a palavra de saída não deve conter:
- 3 vogais consecutivas (
a
e
i
o
u
; isso pode acontecer porqu
palavras) - 3 consoantes correspondentes consecutivas
- 3 vogais consecutivas (
Boa sorte!
Observe que isso é diferente de Gerar uma palavra pronunciável por alguns motivos:
- Número variável de sílabas especificadas por entrada, em vez de um requisito estrito de 10 letras.
- Esse desafio adiciona grupos de letras não exaustivos que devem ser (habilmente) codificados e permitem mais variantes de sílabas, para que o código não possa ser copiado apenas do outro desafio
- Squirdshlicker. Preciso dizer mais?
Também esqueci de enganar o cheque, mas acontece que isso traz bastante novidade para a mesa que não importa. Afinal, existem centenas de desafios de variantes de quine.
Respostas:
JavaScript (ES6),
407403 bytesExperimente online!
fonte
[^aeiou]{3}
está correto? Com base na palavra 'matching' e no exemplo de três sílabas quesquirdshlicker
contémrdshl
, acho que OP significa apenas três das mesmas consoantes adjacentes (oubbb
seja, não é permitido), em vez de três consoantes adjacentes em geral.05AB1E ,
237234230228 bytes-2 bytes graças a @MagicOctopusUrn .
Experimente online ou obtenha mais algumas saídas .
Explicação:
Veja esta dica 05AB1E meu (seção Como cordas compressa não fazem parte do dicionário? , Como comprimir grandes inteiros? E Como listas inteiras compressa? ) Para entender como as obras de peças de compressão.
fonte
žM•ô#‰¦λu¢!¡°gU€•6BS<èJ
é 4 menor que.•!m1±P1Ÿ6ºZ dâ4∍m–G¢”ãÔ2g•
(conversão e substituição da base 6 usando o built-in para AEIOU). TIO Link muito longo.žM•·Áy&ŒGηΩ¼αŸKq•6вèJ
. :) PS: Você pode usar encurtadores de URL como tinyurl.com no PPCG, ao contrário da maioria dos outros SE. :)Geléia , 231 bytes
Experimente online!
Um programa completo que usa um único argumento, o número de sílabas necessárias.
Explicação
O núcleo disso é uma string de dicionário compactada de 66 palavras. Se as palavras forem divididas em grupos de consoantes e vogais e os 3 primeiros grupos usados para cada palavra, eles gerarão os grupos inicial, vogal e final desejados a partir da pergunta. As exceções são
Link auxiliar 1: verifique se mais de 3 vogais seguidas ou mais de 3 da mesma letra seguida Helper link 2: Os três grupos de strings Link principalqu
e,squ
como possuem uma vogal, elas são adicionadas manualmente. A lista de palavras foi construída algoritmicamente a partir do dicionário Jelly usando um script Python. Observe que alguns grupos de letras são repetidos, mas a pergunta permite que as saídas não representem uniformemente cada combinação possível. Se isso fosse preferido, seria fácil tornar cada grupo exclusivo ao custo de dois bytes (Q€
).fonte
gnuignaalfbi
para entrada4
, masaa
não seria possível se eu entendesse o desafio corretamente. A seção combinando sílabas estados " ..., no entanto você não pode colocar uma sílaba terminando com uma vogal imediatamente antes de se começar com uma vogal. "shmooze gaolbird hailshot shriech waeful furze ghaut
, haha. xD Qual é o tamanho do dicionário Jelly?Python 2 ,
522510 bytesExperimente online!
fonte
Pitão,
346335 bytesExperimente online aqui .
fonte
Ruby ,
381379375 bytesUsa correspondências desarrumadas de regex para obter os grupos consoantes. Provavelmente poderia ser otimizado.
Experimente online!
fonte