Su tarea es generar una palabra sin sentido que sea razonablemente pronunciable con el número especificado de 'sílabas'. Cada vez que se ejecuta el programa, posiblemente se obtenga una palabra diferente sin sentido.
Pronunciabilidad
Una palabra pronunciable se compone de sílabas, que a su vez están formadas por un grupo de vocales que posiblemente se intercala entre dos grupos de consonantes. No todos los sonidos son pronunciables en todas las posiciones, y dado que esto depende del idioma, utilizaremos patrones comprensibles para los hablantes de inglés
Grupos de consonantes iniciales:
b c d f g h j k l m n p r s t v wy 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 th th tr wh wr sch scr shm shr squ str str
Grupos de vocales:
a e i o u ae ai ao au ea ee ei eu ia ie io oa oe oi oo ou ue ui
Finalización de los grupos de consonantes:
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 rs rth sch tch
Combinando sílabas
Los grupos de consonantes iniciales y finales son opcionales en general, sin embargo, no puede colocar una sílaba que termine con una vocal inmediatamente antes de que comience con una vocal.
Descargo de responsabilidad
En aras de la simplicidad, ciertas palabras en inglés no se pueden generar de esta manera, como vacío, xilófono, mnemotécnico, pterodáctilo, hermoso, bla, ellos, wow y la mayoría de los plurales.
Visión general
Posibles patrones de sílabas con esta clave:
(SC) = consonante inicial; (V) = grupo vocal; (CE) = consonante final
Para una sílaba:
- (SC) (V) (CE)
- (V) (CE)
- (SC) (V)
- (V)
Con dos sílabas:
- (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)
... y así
Ejemplos
1 sílaba
- charst
- apretado
- chillido
- eess
- shue
- oo
- cheezz
2 sílabas
- jazzcrap
- whylprog
- comiendo
- umba
- ola
- tener
- ingsoc
- greespheurz
- bleuspoo
3 sílabas
- brokiompic
- Squirdshlicker
- capital
- opengtrass
- doble pensamiento
- hermano mayor
- phoebliaptmoo
- skolfblauquent
4 sílabas
- Strawishoepick
- patchworkzombie
- prearneajoomie
- slephotoschou
- doble plusgood
Codificación
Entrada: un número entero para la cantidad de sílabas a generar
Salida: una palabra (probablemente) sin sentido que tiene muchas sílabas
Reglas
- Se requiere alguna forma de aleatoriedad (psuedo). Todas las combinaciones de sílabas deberían ser (teóricamente) posibles de generar, aunque la distribución no tiene que ser uniforme.
- Puede suponer que su generador es aperiódico, por lo que no tiene que ser matemáticamente posible generar todas las palabras posibles (puede que no tenga un período lo suficientemente largo en realidad) y no necesita proporcionar ningún tipo de prueba de que su generador puede, de hecho, producir todas las palabras posibles.
- Su generador debe ser capaz de producir al menos 255 valores distintos, por lo que no puede devolver 4 cada vez que se llama al generador.
- Lo que en última instancia es importante es que de alguna manera incluya todos los grupos de letras anteriores en su código, que cada grupo de letras tenga una probabilidad distinta de cero de ser elegido, y que cada patrón de sílabas tenga una probabilidad distinta de cero (si se proporciona con una aleatoriedad verdadera).
- Debes admitir hasta 16 palabras de sílaba
- Además de las reglas sobre la combinación de sílabas, la palabra de salida no debe tener:
- 3 vocales consecutivas (
a
e
i
o
u
; esto puede suceder para lasqu
palabras) - 3 consonantes coincidentes consecutivas
- 3 vocales consecutivas (
¡Buena suerte!
Tenga en cuenta que esto es distinto de Generar una palabra pronunciable por varias razones:
- Número variable de sílabas especificadas por entrada en lugar de un requisito estricto de 10 letras.
- Este desafío agrega grupos de letras no exhaustivos que deben estar codificados (inteligentemente) y permite más variantes de sílabas, por lo que el código no se puede copiar del otro desafío
- Squirdshlicker. ¿Necesito decir mas?
También olvidé engañar el cheque, pero resulta que esto trae suficientes novedades a la mesa que no importan. Después de todo, hay cientos de desafíos de quine variantes.
Respuestas:
Javascript (ES6),
407403 bytesPruébalo en línea!
fuente
[^aeiou]{3}
es correcto? Basado en la palabra 'coincidencia' y el ejemplo quesquirdshlicker
contiene 3 sílabasrdshl
, creo que OP solo significa 3 de las mismas consonantes adyacentes (bbb
es decir, no está permitido), en lugar de 3 consonantes adyacentes en general.05AB1E ,
237234230228 bytes-2 bytes gracias a @MagicOctopusUrn .
Pruébelo en línea u obtenga algunos resultados más .
Explicación:
Consulte esta sugerencia mía 05AB1E (sección ¿Cómo comprimir cadenas que no forman parte del diccionario ? , ¿Cómo comprimir enteros grandes? Y ¿Cómo comprimir listas enteras? ) Para comprender cómo funcionan las partes de compresión.
fuente
žM•ô#‰¦λu¢!¡°gU€•6BS<èJ
es 4 más pequeño que.•!m1±P1Ÿ6ºZ dâ4∍m–G¢”ãÔ2g•
(conversión y reemplazo de base 6 usando incorporado para AEIOU). TIO Link demasiado largo.žM•·Áy&ŒGηΩ¼αŸKq•6вèJ
. :) PD: Puedes usar acortadores de URL como tinyurl.com en PPCG, a diferencia de la mayoría de los otros SE. :)Jalea , 231 bytes
Pruébalo en línea!
Un programa completo que toma un solo argumento, la cantidad de sílabas requeridas.
Explicación
El núcleo de esto es una cadena de diccionario comprimido de 66 palabras. Si las palabras se dividen en grupos de consonantes y vocales y los primeros 3 grupos tomados para cada palabra, generan los grupos iniciales, vocales y finales deseados a partir de la pregunta. Las excepciones son
Enlace auxiliar 1: compruebe si hay más de 3 vocales seguidas o más de 3 de la misma letra seguidas Enlace auxiliar 2: los tres grupos de cadenas Enlace principalqu
ysqu
porque tienen una vocal, por lo que se agregan manualmente. La lista de palabras fue construida algorítmicamente a partir del diccionario Jelly usando un script Python. Tenga en cuenta que algunos grupos de letras se repiten, pero la pregunta permite que las salidas no representen uniformemente cada combinación posible. Si se prefiere, sería sencillo hacer que cada grupo sea único a costa de dos bytes (Q€
).fuente
gnuignaalfbi
para la entrada4
, peroaa
no debería ser posible si entendí el desafío correctamente. La sección que combina las sílabas dice " ..., sin embargo, no puede colocar una sílaba que termine con una vocal inmediatamente antes de que comience con una vocal " .shmooze gaolbird hailshot shriech waeful furze ghaut
, jaja. xD ¿De qué tamaño es el diccionario de Jelly?Python 2 ,
522510 bytesPruébalo en línea!
fuente
Pyth,
346335 bytesPruébelo en línea aquí .
fuente
Rubí ,
381379375 bytesUtiliza combinaciones de expresiones regulares desordenadas para obtener los grupos de consonantes. Probablemente podría optimizarse.
Pruébalo en línea!
fuente