Вам поручено написать программу, в которой слова составляются в виде строки текста, разделяя их дефисом. Это было бы много работы, поэтому вы хотите пропустить некоторые части, в основном потому, что вы не хотите иметь таблицу произношения, необходимую для идеального алгоритма. Вы также хотите сделать его как можно более коротким (и, следовательно, нечитаемым и не поддерживаемым), чтобы отомстить за выполнение этого задания.
У вас есть два варианта:
- Напишите программу, которая берет строку из STDIN и выводит результат в STDOUT.
- Напишите функцию, которая принимает строку как один параметр и возвращает результат.
Технические характеристики
- В этом случае строка означает любую строковую конструкцию на выбранном вами языке (байтовые массивы, символьные массивы, строки ...).
- Гласные
a, e, i, o, u - В данной строке есть
1 <= n <= 10слова, каждый из которых имеет длину между1 - 30символами включительно. На выходе должны быть слова с переносом слов. - Все буквы строчные, а слова всегда разделены пробелами. Таким образом, вход состоит из символов
[a-z ] - Применяйте правила в порядке важности.
- Когда слово разделено, начните снова с правой половины слова.
Правила для слогов , в порядке важности
Два последовательных одинаковых гласных считаются одним (т. Е. feetИмеет только один гласный, но beatи findingимеют два). Каждый слог имеет ровно один гласный, поэтому для каждого гласного есть один слог.
- Если все слово содержит только четыре буквы, верните его без изменений. (пропустите это для остальной части слова)
- Если слово имеет только одну гласную, верните слово без изменений.
- Если слово имеет два последовательных гласных, разделите их (т. Е.
diaspora->di-as-po-ra) - Когда два или более согласных находятся между двумя гласными (одинаковыми или разными), делите после первого согласного (т.е.
sis-ter), если согласная часть не являетсяck, и в этом случае делите слово после него. (т.е..nickel->nick-el) - Когда
yмежду двумя гласными появляется а, делите слово после него (например,paying->pay-ing). - Когда один согласный находится между двумя гласными (одинаковыми или разными), разделите их перед согласными (т. Е.
dra-gon) - Верните слово без изменений, если деление невозможно.
Я выбрал эти правила, потому что они могут быть применены рекурсивно без проблем и не требуют таблиц произношения. Таким образом, они не являются точными, и, например, правило № 5 часто не является правильным. В общем случае, хотя, это так.
пример
In: hello world
Out: hel-lo world
In: have a nice day
Out: have a nice day
In: pour some nickel and xenon there
Out: pour some nick-el and xe-non the-re
lua
x-e-non? Ссылка на правило № 4?