Найти в Дзене

Процедурная генерация имён для котов-воителей

Не так давно я задался целью сделать простой процедурный генератор имён для своей подруги-квшницы, которая только начала осваивать программирование. Выбор языка пал на Паскаль, в силу удобного для новичков синтаксиса. В качестве маленького бонуса я вписался менее, чем в сто строк кода. Пусть это и не обязательно, приятно осознавать, что код не вышел раздутым при всей своей простоте. Желаемый результат:
Огнезвёзд
Мохокрыл
Остролапка
Синяя звезда Задача
Собрать код, который создавал бы имена котов, кошек, их предводителей и предводительниц процедурно, используя два массива - массив с первым видом слов(характеристика кота) и вторым видом(характеристика тела), как то: первого вида - мохо, быстро, бело, и второго вида - лап, глаз, свет.
Всего в моём генераторе используется по 10 слов первого и второго вида, однако алгоритм спокойно расширяется до любого количества слов.
Алгоритм 1. Выбор первого слова
2. Выбор второго слова
3. Выбор пола
4. Будет ли кот/кошка предводителем?
5. Дополнител
Оглавление

Не так давно я задался целью сделать простой процедурный генератор имён для своей подруги-квшницы, которая только начала осваивать программирование. Выбор языка пал на Паскаль, в силу удобного для новичков синтаксиса. В качестве маленького бонуса я вписался менее, чем в сто строк кода. Пусть это и не обязательно, приятно осознавать, что код не вышел раздутым при всей своей простоте.

Желаемый результат:


Огнезвёзд
Мохокрыл
Остролапка
Синяя звезда

Задача

Собрать код, который создавал бы имена котов, кошек, их предводителей и предводительниц процедурно, используя два массива - массив с первым видом слов(характеристика кота) и вторым видом(характеристика тела), как то: первого вида - мохо, быстро, бело, и второго вида - лап, глаз, свет.
Всего в моём генераторе используется по 10 слов первого и второго вида, однако алгоритм спокойно расширяется до любого количества слов.


Алгоритм

1. Выбор первого слова
2. Выбор второго слова
3. Выбор пола
4. Будет ли кот/кошка предводителем?
5. Дополнительный критерий для кошек, который определял каким вариантом будет её имя в случае предводительства(пример: Речная звезда или Речнокрылая звезда). Этот вариант позже был отбракован, но в коде он всё ещё есть.

Изначальной значение(сид) я беру случайное, хоть и можно заставить пользователя вводить его вручную.

Реализация

Всего из нескольких строк строится дерево решений:
Если это кошечка:
-Если она предводительница: в случае, если на конце первого слова буква "е" - заменить её на "нная". В иных случаях заменять последнюю букву на "ая". После добавить "Звезда". Примеры - Мокрая Звезда и Огненная Звезда.
-Если она не предводительница: объединить первое и второе слово, в конце добавить "ка". Пример - Огнелапка.
Если это кот:
-Если он предводитель: заменить второе слово на "звёзд". Пример: Огнезвёзд.
-Если он не предводитель: объединить первое и второе слово. Пример: Огнелап.

Результат:

Светозвёзд
Белозвёзд
Белоус
Пеплогривка
Пёстрокрыл
Речнозвёзд
Светлоглазка
И подобные.

Итог:

Алгоритм получился, и пусть он не идеален, в 80% случаев он выдаёт вполне адекватные комбинации, которые могли бы действительно существовать во вселенной котов воителей. Этот маленький алгоритм, написанный за пару часов ленивого программирования отлично показывает, насколько легко бывает создавать адекватные имена. В одной из следующих статей мы разберём генерацию простых имён для людей и монстров.

Послесловие:

Уже после написания алгоритма появился официальный генератор имён на сайте котов-воителей. Он мне не нравится, потому что во-первых, он случайный, что выливается в имена типа "starstar"(звездозвезда) или "headhead"(головоголова), а во-вторых - он на английском, что значительно упрощает его структуру(процедурная генерация в таком случае вообще не имеет смысла, только рандом с парой правил).