Осуществление группировки слогов в слова — КиберПедия 

История развития пистолетов-пулеметов: Предпосылкой для возникновения пистолетов-пулеметов послужила давняя тенденция тяготения винтовок...

Поперечные профили набережных и береговой полосы: На городских территориях берегоукрепление проектируют с учетом технических и экономических требований, но особое значение придают эстетическим...

Осуществление группировки слогов в слова

2020-04-01 84
Осуществление группировки слогов в слова 0.00 из 5.00 0 оценок
Заказать работу

 

После разбиения всех введенных слов на слоги запускается функция группировки слогов в слова (group($k)). У неё только один входной параметр – количество слогов в новых словах.

В основе этой функции лежит алгоритм размещения с повторениями чисел 1..n в последовательности по k элементов.[5]

Рассмотрим эту функцию.

function group($k)

{

$f=fopen("slogi.txt","rt");//откроем файл slogi.txt

$a=explode("-",fgets($f));//запишем слоги в масс. а

fclose($f);                          //закроем файл

$n=count($a)-1;       //посчитаем количество слогов

for($i=0;$i<$k;$i++){

    $x[$i]=1;         //зададим начальную и

    $y[$i]=$n;}     //конечную комбинацию чисел

while(prov($x,$y))   //пока они различны

{$p=$k;                             //пост. инд. в конец посл-ти

while($x[$p]==$n)//пока не найдем эл-т, отличный от

    $p--;      //максимального, уменьш. р

$x[$p]++;       //увелич р-й эл-т послед-ти

for($i=$p+1;$i<$k;$i++)

$x[$i]=1; //все след-ие делаем единицами

if(correct($x)) //если комбинация нам подходит

{for($i=0;$i<$k;$i++) //выводим слоги с соотв.

{ print $a[$x[$i]-1];}//номерами на экран

echo "<br>";}                    //переход на новую строку}

Эта функция вызывает prov($x, $y)и correct($x). Функция prov($x, $y)следит за совпадением начальной и конечной комбинациями. Это осуществляется методом простого перебора всех элементов массивов x и y. Если в результате количество совпадающих элементов равно количеству элементов в любом из массивов, то возвращается 0 (и алгоритм размещений с повторениями заканчивает свою работу).

function prov($x, $y)

{

$fl=0;

for($i=0;$i<count($y);$i++)

    if($x[$i]==$y[$i]) $fl++;

if($fl==count($y)) return 0;

return 1;}

Функция correct($x) проверяет полученную комбинацию на «пригодность». В данном случае, она отслеживает повторяющиеся слоги. Если они присутствуют, она не «пропускает» их к выводу на экран.

function correct($x)

{for($h=0;$h<count($x);$h++)

for($d=$h+1;$d<count($x);$d++)

if($x[$h]==$x[$d]) return 0;

return 1;}

В результате работы этой (завершительной) части программы на экран выводятся все слова длины, указанной в поле slog, не содержащие повторяющихся слогов.

Анализ полученного генератора

 

Полученная программа далеко неидеальна.

Основным недостатком её является трудоёмкость. Она довольно-таки велика за счет использования алгоритма размещения с повторениями, причем совершается явно лишняя работа, т.к. все размещения с повторениями как раз нам и не нужны - используем мы только слова без повторяющихся слогов. Ещё можно обратить внимание, что проверка букв в слове на принадлежность к гласным выполняется 2 раза, тогда как, заведя переменную, запоминающую места гласных букв в слове, мы могли бы прибегать к ней только один раз. Хотя по сравнению с масштабностью программы это не играет существенной роли, для красоты можно было бы это осуществить.

Вторым минусом программы я бы назвала отсутствие дополнительной обработки выводимых слов. Скажем, не осуществляется проверка слов на соответствие простейшим орфографическим правилам (в частности на наличие недопустимых сочетаний букв, которые могут возникнуть при «состыковке» слогов из разных слов). Не осуществляется и проверка на наличие одинаковых слогов в словах (что является ещё одной причиной появления слов с одинаковыми слогами, например, если ввести слово «мама»). Все проверки такого рода можно дописывать в функцию correct($x). Только тогда в качестве параметра ей следует передавать также массив слогов.

В генератор также можно было бы включить сортировку слогов в файле. Это упростило бы работу с выходными данными, т.к. они тоже были бы отсортированы. К тому же это можно было бы использовать для исключения из списка одинаковых слогов (о чем говорилось ранее).

Не смотря на недостатки, эта программа является рабочей и может являться если не готовым продуктом, то как минимум основой для его создания.

На мой взгляд, мне удалось написать программу довольно-таки просто, по максимуму используя возможности выбранного языка программирования.


Заключение

 

Полученный в ходе данной работы генератор удовлетворяет большинству выдвинутых в процессе работы требований. Он действительно способен сгенерировать набор слов-неологизмов, основанных на ключевых словах. Далее из них мы должны самостоятельно выбирать те, которые удовлетворяют критериям «хорошего» названия (о которых писалось ранее). Не стоит забывать и о личных предпочтениях заказчиков. Этот процесс тоже довольно-таки трудоёмкий, но несомненно проще, чем придумывание этих слов.

Варианты развития. В качестве основных задач, неправленых на улучшение работы генератора можно выделить:

1. улучшение быстродействия;

2. углубление проверки выходных данных;

3. включение функции поиска наиболее благозвучных слов из полученных.

Однако уже в таком его состоянии его можно использовать в качестве помощника для составления названий. Эта программа, при должной доработке, может быть использована как нейминговыми агентствами, так и людьми, которым необходимо придумать название для чего угодно, но неохота платить за это деньги (например, когда речь идет о писателях-фантастах, которые уже месяц ломают голову, как назвать неизведанную планету…).

У нейминга в России, как и во сём мире, огромный потенциал для развития. Его необходимость современному обществу постоянно даёт толчок для возникновения принципиально новых и доработки существующих методов имяобразования. Компьютерное решение этой проблемы представляется на сегодняшний день одним из самых предпочтительных и удобных. Разработанный мной простейший генератор вряд ли внесет большой вклад в развитие этой отрасли, но сам факт решения этой задачи может послужить толчком к решению этой проблемы в более крупном масштабе, что со временем приведет к созданию чего-то более совершенного. В любом случае, в процессе разработки я на себе ощутила востребованность квалифицированного программиста в современной жизни.


Список литературы

 

1. Бабайцева, В.В. «Русский язык: теория. 5 – 9кл.» Учебник для общеобразовательных учреждений. В.В. Бабайцева, Л.Д. Чеснокова – 9-е изд. – М.: Дрофа, 2000. – 48-49 с..

2. Бизнес-журнал [электронный ресурс]/ Джавед, Н. Случайный нейминг – Электрон. статья – 2005.- Режим доступа:
http://www.business-magazine.ru/oldbusiness/225706/. – Яз.рус.

3. Нейминогвое агентство Нейминг.Ру [Электронный ресурс]/ Лебедев-Любимов, А. Психологические проблемы нейминга, или как убеждать названием – Электрон. статья - 2006.- Режим доступа: http://www.naming.ru/mambo/index.php?option=com_
content&task=view&id=12&Itemid=43

4. Patentoved.com [Электронный ресурс]/ Перция, В. 29 способов имяобразования – Электрон. статья – 2005. – Режим доступа: http://www.patentoved.com/content.php?id-32

5. Шень, А. Программирование: теоремы и задачи/ А. Шень. – М.: МЦНМО, 1995. – 43 – 44 с.

6. Котеров, Д.В. Самоучитель PHP 4. /Д.В. Котеров. — СПб.: БХВ-Петербург, 2001.


Поделиться с друзьями:

Особенности сооружения опор в сложных условиях: Сооружение ВЛ в районах с суровыми климатическими и тяжелыми геологическими условиями...

История создания датчика движения: Первый прибор для обнаружения движения был изобретен немецким физиком Генрихом Герцем...

Историки об Елизавете Петровне: Елизавета попала между двумя встречными культурными течениями, воспитывалась среди новых европейских веяний и преданий...

Двойное оплодотворение у цветковых растений: Оплодотворение - это процесс слияния мужской и женской половых клеток с образованием зиготы...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.016 с.