Хроники лаборатории |
Переводчик на язык Йоды. Изнанка. | (← 24 окт 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. Гляжу в_гору поднимается лошадка медленно хворосту+везущая возСклеиваем строки вместе, убираем служебные символы: Однажды, в студеную пору зимнюю, вышел из лесу я. Был мороз сильный. Гляжу, в гору поднимается лошадка медленно, хворосту везущая воз.Вполне по-йодовски, по-моему. По этому алгоритму можно написать программу на любом языке программирования. А если лень писать, можете посмотреть листинг этого прикола.
| рубрики: приемчики | |
|
Случайные записи впридачу: Дуэт (стихи) Выдуманная история в двух письмах и одном восклицании. (это я так шучу) Суровые серверы. (жизненное)
|
__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: ну если она как-то связана с этой шуткой, поделись, что ли? ![=]](../images/smiles/icon_sqr.gif) |
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. Перепишу под мелкомягких наверно... |
|
Оставлять комментарии могут только имеющие свой ЖЖ-, ЛИру-аккаунт или еще какой openID (как так?). |
|