Votre tâche consiste à générer un mot non-sens qui est raisonnablement prononçable avec le nombre spécifié de «syllabes». Chaque fois que le programme est exécuté, il peut en résulter un mot de non-sens différent.
Prononçabilité
Un mot prononçable est composé de syllabes, qui sont à leur tour constituées d'un groupe de voyelles qui est éventuellement pris en sandwich entre deux groupes de consonnes. Tous les sons ne peuvent pas être prononcés dans toutes les positions, et comme cela dépend de la langue, nous utiliserons des modèles compréhensibles par les anglophones
Début des groupes de consonnes:
b c d f g h j k l m n p r s t v w y z bl br ch cl cr dr fl 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 squ str thr
Groupes de voyelles:
a e i o u ae ai ao au ea ee ei eu ia ie io oa oe oi oo ou ue ui
Fin des groupes de consonnes:
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 rv rz sh sk sp ss st zz lch lsh lth rch rsh rsh rst rst rth sch tch
Combinaison de syllabes
Les groupes de consonnes de début et de fin sont facultatifs en général, mais vous ne pouvez pas placer une syllabe se terminant par une voyelle juste avant une commençant par une voyelle.
Avertissement
Dans un souci de simplicité, certains mots anglais ne peuvent pas être générés de cette façon, tels que vide, xylophone, mnémonique, ptérodactyle, beau, bla, eux, wow et la plupart des pluriels.
Aperçu
Modèles de syllabes possibles à l'aide de cette touche:
(SC) = consonne de départ; (V) = groupe de voyelles; (EC) = consonne finale
Pour une syllabe:
- (SC) (V) (CE)
- (V) (CE)
- (SC) (V)
- (V)
Avec deux syllabes:
- (SC) (V) (EC) (SC) (V) (EC)
- (SC) (V) (EC) (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)
... etc
Exemples
1 syllabe
- charst
- serré
- shriegn
- eess
- shue
- oo
- cheezz
2 syllabes
- jazzcrap
- whylprog
- en mangeant
- umba
- ola
- avoir
- ingsoc
- greespheurz
- bleuspoo
3 syllabes
- brokiompic
- squirdshlicker
- Capitale
- opengtrass
- double pensée
- grand frère
- phoebliaptmoo
- skolfblauquent
4 syllabes
- paille
- patchworkzombie
- preearneajoomie
- slephotoschou
- doubleplusgood
Codage
Entrée: un entier pour le nombre de syllabes à générer
Sortie: un mot (probablement) absurde qui contient de nombreuses syllabes
Règles
- Une certaine forme d'aléa (pseudo) est requise. Toutes les combinaisons de syllabes devraient être (théoriquement) possibles à générer, bien que la distribution ne doive pas être uniforme.
- Vous pouvez supposer que votre générateur est apériodique, il ne doit donc pas être mathématiquement possible de générer tous les mots possibles (il peut ne pas avoir une période suffisamment longue en réalité) et vous n'avez pas besoin de fournir une sorte de preuve que votre générateur peut, en fait, produire tous les mots possibles.
- Votre générateur doit en fait être capable de produire au moins 255 valeurs distinctes, vous ne pouvez donc pas simplement retourner 4 à chaque appel du générateur.
- Ce qui est finalement important, c'est que vous incluiez en quelque sorte tous les groupes de lettres ci-dessus dans votre code, que chaque groupe de lettres ait une probabilité non nulle d'être sélectionné, et que chaque motif de syllabe ait une probabilité non nulle de se produire (s'il est fourni avec un vrai caractère aléatoire).
- Vous devez prendre en charge jusqu'à 16 mots de syllabe
- En plus des règles de combinaison des syllabes, le mot de sortie ne doit pas avoir:
- 3 voyelles consécutives (
a
e
i
o
u
; cela peut arriver pour lesqu
mots) - 3 consonnes correspondantes consécutives
- 3 voyelles consécutives (
Bonne chance!
Notez que ceci est distinct de Générer un mot prononçable pour plusieurs raisons:
- Nombre variable de syllabes spécifié par entrée plutôt qu'une exigence stricte de 10 lettres.
- Ce défi ajoute des groupes de lettres non exhaustifs qui doivent être (intelligemment) encodés et permet plus de variantes de syllabes, donc le code ne peut pas être simplement copié de l'autre défi
- Squirdshlicker. Dois-je en dire plus?
J'ai également oublié de duper le chèque, mais il s'avère que cela apporte suffisamment de nouveautés à la table pour que cela n'ait pas d'importance. Après tout, il existe des centaines de défis de variantes quine.
Réponses:
JavaScript (ES6),
407403 octetsEssayez-le en ligne!
la source
[^aeiou]{3}
c'est correct? Sur la base du mot «correspondance» et de l'exemple de 3 syllabessquirdshlicker
contenantrdshl
, je pense que OP ne signifie que 3 des mêmes consonnes adjacentes (c'estbbb
-à- dire n'est pas autorisé), au lieu de 3 consonnes adjacentes en général.05AB1E ,
237234230228 octets-2 octets grâce à @MagicOctopusUrn .
Essayez-le en ligne ou obtenez quelques sorties supplémentaires .
Explication:
Voir cette astuce 05AB1E de la mine (section Comment chaînes Compresser ne font pas partie du dictionnaire? , Comment compresser les grands entiers? , Et comment les listes entières Compresser? ) Pour comprendre le fonctionnement de pièces de compression.
la source
žM•ô#‰¦λu¢!¡°gU€•6BS<èJ
4 plus petit que.•!m1±P1Ÿ6ºZ dâ4∍m–G¢”ãÔ2g•
(conversion et remplacement de base 6 à l'aide de la fonction intégrée pour AEIOU). Lien TIO trop long.žM•·Áy&ŒGηΩ¼αŸKq•6вèJ
. :) PS: Vous pouvez utiliser des raccourcisseurs d'URL comme tinyurl.com sur PPCG, contrairement à la plupart des autres SE. :)Gelée , 231 octets
Essayez-le en ligne!
Un programme complet qui prend un seul argument, le nombre de syllabes nécessaires.
Explication
Le cœur de ceci est une chaîne de dictionnaire compressée de 66 mots. Si les mots sont divisés en groupes de consonnes et de voyelles et que les 3 premiers groupes sont pris pour chaque mot, ils génèrent les groupes de départ, de voyelle et de fin souhaités à partir de la question. Les exceptions sont
Lien d'assistance 1: vérifiez si plus de 3 voyelles dans une rangée ou plus de 3 de la même lettre dans une rangée Lien d'assistance 2: les trois groupes de chaînes Lien principalqu
etsqu
parce qu'elles contiennent une voyelle, elles sont donc ajoutées manuellement. La liste de mots a été construite de manière algorithmique à partir du dictionnaire Jelly à l'aide d'un script Python. Notez que certains groupes de lettres sont répétés, mais la question permet aux sorties de ne pas représenter uniformément chaque combinaison possible. Si cela était préféré, il serait simple de rendre chaque groupe unique au prix de deux octets (Q€
).la source
gnuignaalfbi
pour entrée4
, mais celaaa
ne devrait pas être possible si j'ai bien compris le défi. La section combinant les syllabes déclare " ... mais vous ne pouvez pas placer une syllabe se terminant par une voyelle juste avant une commençant par une voyelle. "shmooze gaolbird hailshot shriech waeful furze ghaut
, haha. xD Quelle est la taille du dictionnaire de Jelly?Python 2 ,
522510 octetsEssayez-le en ligne!
la source
Pyth,
346335 octetsEssayez-le en ligne ici .
la source
Rubis ,
381379375 octetsUtilise des correspondances d'expression rationnelle désordonnées pour obtenir les groupes de consonnes. Pourrait probablement être optimisé.
Essayez-le en ligne!
la source