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

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

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

Что дальше?

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

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

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

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


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

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

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


RSS HTML рубрики: приемчикиjuick twitter facebook вконтакте

Случайные записи впридачу:
Дуэт (стихи)
Выдуманная история в двух письмах и одном восклицании. (это я так шучу)
Суровые серверы. (жизненное)

__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.
Перепишу под мелкомягких наверно...
Откуда вы?   

Войти через loginza
Оставлять комментарии могут только
имеющие свой ЖЖ-, ЛИру-аккаунт или
еще какой openID (как так?).
Подписаться


Рубрики:

жизненное
аудио-я
видеомонтаж
фотоохота
ремонт
стихи
рассказы
синематограф
библиотека
фонотека
точка зрения
FAQ
приемчики
придумалось
ожидания-прогнозы
допридумано
рингтоны
это я так шучу
обои
микрозарисовки
опасный Интернет
я в печати
поездки-тусовки
смехоспам
мой код
футболки
игродром
подводная жизнь
сайтоводство
программы
персоны
LI.ru
аватарки
курсоры


Разное:

Полка с фильмами
Книжная полка
Полка с играми
Избранное


Календарь записей

2020 (6)
май (1)
апрель (2)
март (2)
февраль (1)
2019 (3)
2018 (1)
2017 (10)
2016 (12)
2015 (3)
2014 (12)
2013 (10)
2012 (17)
2011 (84)
2010 (172)
2009 (228)
2008 (263)
2007 (154)
2006 (4)
2005 (1)
2004 (1)
2002 (1)
2001 (9)
2000 (9)
1999 (1)
© сайт разработан и поддерживается мной.