Ваша задача - создать бессмысленное слово, которое можно произносить с указанным количеством «слогов». Каждый раз, когда программа запускается, возможно, приводит к другому бессмысленному слову.
Pronounceability
Произносимое слово состоит из слогов, которые, в свою очередь, состоят из группы гласных, которая, возможно, зажата между двумя согласными группами. Не все звуки можно произносить во всех позициях, и поскольку это зависит от языка, мы будем использовать шаблоны, понятные для носителей английского языка.
Начальные согласные группы:
b c d f g h j k l m n p r s t v w y z bl brch cl cr dr fl f g g gl gn gr kn ph pr pr sc sh sl sl sm sn sp st th tr whr sch scr shm shr squ str thr
Группы гласных:
все в порядке, то есть, то есть, то есть, то, что вы хотите
Конечные согласные группы:
bcdfglmnprstxz bt ch ck ct ft gh gn lb ld lf lk ll lm ln lp lt mb mn mp nk ng nt n pn rt rt r r r r r r r r r r r r r r r r r r r r r r sh sh sp ss st zz lch lsh lth rch rrs rth sch tch
Объединение Слогов
Как начальная, так и конечная группы согласных являются необязательными, однако вы не можете поместить слог, заканчивающийся гласным, непосредственно перед тем, который начинается с гласного.
отказ
В интересах простоты, некоторые английские слова на самом деле не могут быть сгенерированы таким образом, такие как вакуум, ксилофон, мнемоника, птеродактиль, красивые, бла, они, вау, и большинство множественного числа.
обзор
Возможные шаблоны слогов с использованием этого ключа:
(SC) = начальный согласный; (V) = группа гласных; (EC) = согласный
Для одного слога:
- (SC), (V), (ЕС)
- (V), (ЕС)
- (SC), (V),
- (В)
С двумя слогами:
- (SC), (V), (ЕС) (SC), (V), (ЕС)
- (SC), (V), (ЕС) (SC), (V),
- (SC), (V), (ЕС) (В) (ЕС)
(SC), (V), (ЕС) (В)
(SC), (V), (SC), (V), (ЕС)
(SC), (V), (SC), (V),
(V), (ЕС) (SC), (V), (ЕС)
- (V), (ЕС) (SC), (V),
- (V), (ЕС) (В) (ЕС)
(V), (ЕС) (В)
(V), (SC), (V), (ЕС)
- (V), (SC), (V),
... и так далее
Примеры
1 слог
- charst
- Tigh
- shriegn
- EESS
- Shue
- оо
- cheezz
2 слога
- jazzcrap
- whylprog
- принимать пищу
- Умба
- ола
- иметь
- ангсоца
- greespheurz
- bleuspoo
3 слога
- brokiompic
- squirdshlicker
- столица
- opengtrass
- двоемыслие
- старший брат
- phoebliaptmoo
- skolfblauquent
4 слога
- strawishoepick
- patchworkzombie
- prearneajoomie
- slephotoschou
- doubleplusgood
кодирование
Ввод: целое число для количества генерируемых слогов
Вывод: (возможно) бессмысленное слово, которое много слогов долго
правила
- Требуется некоторая форма (псевдо) случайности. Все комбинации слогов должны (теоретически) генерироваться, хотя распределение не обязательно должно быть равномерным.
- Вы можете предположить, что ваш генератор является апериодическим, так что не должно быть математически возможным генерировать каждое возможное слово (в действительности у него может не быть достаточно длительного периода), и вам не нужно предоставлять какие-либо доказательства того, что ваш генератор может, фактически, произвести любое возможное слово.
- Ваш генератор должен действительно иметь возможность генерировать не менее 255 различных значений, поэтому вы не можете просто возвращать 4 каждый раз, когда вызывается генератор.
- В конечном счете важно, чтобы вы каким-то образом включили все вышеупомянутые буквенные группы в свой код, чтобы каждая буквенная группа имела ненулевую вероятность выбора, а каждый шаблон слога имел ненулевую вероятность появления (если он предоставлен с истинной случайностью).
- Вы должны поддерживать до 16 слоговых слов
- В дополнение к правилам объединения слогов, выходное слово не должно иметь:
- 3 последовательных гласных (
a
e
i
o
u
это может произойти дляqu
слов) - 3 последовательных согласных согласных
- 3 последовательных гласных (
Удачи!
Обратите внимание, что это отличается от « Произведите произносимое слово» по нескольким причинам:
- Переменное количество слогов, заданное вводом, а не строгое требование из 10 букв.
- Эта задача добавляет неисчерпывающие группы букв, которые должны быть (умно) закодированы, и допускает больше вариантов слогов, поэтому код нельзя просто скопировать из другой задачи.
- Squirdshlicker. Нужно ли мне сказать больше?
Я также забыл дурачить проверку, но оказалось, что это приносит достаточно нового в таблицу, что это не имеет значения. В конце концов, существуют сотни различных вариантов.
Ответы:
JavaScript (ES6),
407403 байтаПопробуйте онлайн!
источник
[^aeiou]{3}
это правильно? Основано на слове «соответствие» и 3-слоговом примере,squirdshlicker
содержащемrdshl
, я думаю, что OP означает только 3 одинаковых смежных согласных (тоbbb
есть не допускается) вместо 3 смежных согласных в целом.05AB1E ,
237234230228 байт-2 байта благодаря @MagicOctopusUrn .
Попробуйте онлайн или получите еще несколько выходов .
Объяснение:
Смотрите этот 05AB1E наконечник шахты (раздел Как сжать строки не часть словаря? , Как сжать большие числа? , И Как сжимать целочисленные списки?» ), Чтобы понять, как работают части сжатия.
источник
žM•ô#‰¦λu¢!¡°gU€•6BS<èJ
на 4 меньше чем.•!m1±P1Ÿ6ºZ dâ4∍m–G¢”ãÔ2g•
(преобразование базы 6 и замена с использованием встроенного для AEIOU). TIO Ссылка слишком длинная.žM•·Áy&ŒGηΩ¼αŸKq•6вèJ
. :) PS: Вы можете использовать сокращения URL, такие как tinyurl.com на PPCG, в отличие от большинства других SE. :)Желе , 231 байт
Попробуйте онлайн!
Полная программа, которая принимает один аргумент, необходимое количество слогов.
объяснение
Ядром этого является сжатая словарная строка из 66 слов. Если слова разбиты на группы согласных и гласных и первые 3 группы взяты для каждого слова, они генерируют желаемые начальную, гласную и конечную группы из вопроса. Исключение составляют
Вспомогательная ссылка 1: проверьте, более 3 гласных подряд или более 3 одинаковых букв подряд Вспомогательная ссылка 2: Три группы строк Главная ссылкаqu
иsqu
потому, что в них есть гласный звук, поэтому они добавляются вручную. Список слов был построен алгоритмически из словаря Jelly с использованием скрипта Python. Обратите внимание, что некоторые буквенные группы повторяются, но этот вопрос позволяет выходам неравномерно представлять каждую возможную комбинацию. Если бы это было предпочтительным, было бы просто сделать каждую группу уникальной за счет двух байтов (Q€
).источник
gnuignaalfbi
для ввода4
, но этоaa
не должно быть возможно, если я правильно понял задачу. Раздел объединения слогов состояния « ... Однако вы не можете поместить слог , оканчивающийся на гласный непосредственно перед одной , начиная с гласной. »shmooze gaolbird hailshot shriech waeful furze ghaut
, ха-ха. xD Насколько велик словарь желе в любом случае?Python 2 ,
522510 байтПопробуйте онлайн!
источник
Pyth,
346335 байтПопробуйте это онлайн здесь .
источник
Рубин ,
381379375 байтИспользует грязные регулярные выражения, чтобы получить группы согласных. Возможно, было бы оптимизировано.
Попробуйте онлайн!
источник