• Авторизация


Переводчик на язык Йоды. Изнанка. 24-10-2008 15:47 к комментариям - к полной версии - понравилось!


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

Итак, на вход приходит текст. Например, такой:
Однажды, в студеную зимнюю пору, я из лесу вышел; был сильный мороз. Гляжу, поднимается медленно в гору лошадка, везущая хворосту воз.

Что дальше?

В первую очередь надо привести его к удобоваримому виду: убрать двойные пробелы, символы перевода строки, спустить регистр в нижний. Затем надо «приклеить» предлоги к словам, идущим за ними (чтобы получилось одно «слово», окруженное пробелами) с помощью какого-нибудь специального символа, который потом можно будет убрать. Например, символ подчеркивания. Еще желательно «приклеить» прилагательные к существительным. Но другим «клеем» (я выбрал знак плюса), я потом поясню почему. Это надо, чтобы при перемешивании слов смысл не сильно искажался:

однажды, в_студеную+зимнюю+пору, я из_лесу вышел; был сильный+мороз. гляжу, поднимается медленно в_гору лошадка, везущая+хворосту воз.

Далее аккуратно расчленяем текст на предложения, запоминая чем заканчивается каждая строка:

1. однажды, в_студеную+зимнюю+пору, я из_лесу вышел;
2. был сильный+мороз.
3. гляжу, поднимается медленно в_гору лошадка, везущая+хворосту воз
.

При грубом приближении каждое предложение состоит из субпредложений, разделенных запятыми:

1.1 однажды
1.2 в_студеную+зимнюю+пору
1.3 я из_лесу вышел;

2.1 был сильный+мороз.

3.1 гляжу
3.2 поднимается медленно в_гору лошадка
3.3 везущая+хворосту воз


Обращу еще раз внимание - «склейки» из прилагательного с существительным считаются одним словом.

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

1.1 однажды
1.2 в_студеную+пору+зимнюю
1.3 вышел из_лесу я;

2.1 был мороз+сильный.

3.1 гляжу
3.2 в_гору поднимается лошадка медленно
3.3 хворосту+везущая воз


Склеиваем обратно строки, возвращая знаки, которыми заканчивались строки (правда, точку с запятой возвращаем простой точкой), заодно первую букву каждой строки делаем строчной:

1. Однажды в_студеную+пору+зимнюю вышел из_лесу я;
2. Был мороз+сильный.
3. Гляжу в_гору поднимается лошадка медленно хворосту+везущая воз


Склеиваем строки вместе, убираем служебные символы:

Однажды, в студеную пору зимнюю, вышел из лесу я. Был мороз сильный. Гляжу, в гору поднимается лошадка медленно, хворосту везущая воз.

Вполне по-йодовски, по-моему. По этому алгоритму можно написать программу на любом языке программирования. А если лень писать, можете посмотреть листинг этого прикола.
вверх^ к полной версии понравилось! в evernote
Комментарии (9):
__ivanhoe 24-10-2008-15:50 удалить
Прикольная задумка :)
V_exeR 24-10-2008-16:26 удалить
__ivanhoe: уморительно получается, когда переводишь служебные записки.

[показать]Deep Forest - Endangered Species
Niko-Neta 24-10-2008-18:46 удалить
Оба на. А я уже знаю тему своей лабы по делфи...
V_exeR 25-10-2008-08:19 удалить
Niko-Neta: ну если она как-то связана с этой шуткой, поделись, что ли? =]
Niko-Neta 25-10-2008-16:27 удалить
V_exeR
Чего-чего? Вот если смогу это всё реализовать... Если не забодаюсь в строках то да... Хотя зачем тебе то оно? Прога у тебя же уже своя написана.
Или я чего не понимаю в вопросе?
V_exeR 25-10-2008-16:42 удалить
Ответ на комментарий Niko-Neta # Niko-Neta: я имею в виду, что не очень понял, к чему твой комментарий про лабораторную.

[показать]Пикник - Мы как трепетные птицы
-hunter- 27-10-2008-22:56 удалить
Хех интересная идея! =)


Комментарии (9): вверх^

Вы сейчас не можете прокомментировать это сообщение.

Дневник Переводчик на язык Йоды. Изнанка. | V_exeR - ЛИру-аккаунт | Лента друзей V_exeR / Полная версия Добавить в друзья Страницы: раньше»