Переводчик на язык Йоды. Изнанка.

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

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

Что дальше?

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

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

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

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. Гляжу в_гору поднимается лошадка медленно хворосту+везущая воз


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

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

Вполне по-йодовски, по-моему. По этому алгоритму можно написать программу на любом языке программирования. А если лень писать, можете посмотреть листинг этого прикола.
__ivanhoe (24 окт 2008г, 12:50) #
Прикольная задумка :)
V.exeR (24 окт 2008г, 13:26) #
__ivanhoe: уморительно получается, когда переводишь служебные записки.

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

Пикник - Мы как трепетные птицы
-hunter- (27 окт 2008г, 19:56) #
Хех интересная идея! =)
СисАдмин (24 мар 2009г, 14:38) #
+1. Это будет следующим приколом, после перехвата ввода клавы средствами WSH.
Перепишу под мелкомягких наверно...