![]() |
Модераторы: korob2001, ginnie |
![]() ![]() ![]() |
|
Irokez |
|
|||
![]() индеец ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1180 Регистрация: 20.10.2004 Репутация: нет Всего: 53 |
Учу вот перл
![]() Перл понадобится в основном для обработки текстов (точнее для NLP), не для веб и не для системного программирования. Буду признателен, если подкините задачки, на которых смогу учиться. Или может ссылки на задачи. Чьи то домашние задания тоже пойдут, но за срок выполнения я не ручаюсь ![]() |
|||
|
||||
amg |
|
||||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1145 Регистрация: 3.8.2006 Где: Новосибирск Репутация: 38 Всего: 50 |
Вот, например.
Написать программу-фильтр, преобразующую текст типа
И в лингвистике подобное встречается. Например, сгруппировать по частям речи текст типа Мама(сущ.) мыла(гл.) раму(сущ.) Это сообщение отредактировал(а) amg - 13.9.2007, 07:51 |
||||
|
|||||
Irokez |
|
|||
![]() индеец ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1180 Регистрация: 20.10.2004 Репутация: нет Всего: 53 |
ммм.. решил на 10-й строке сделать проверку на уже имеющийся урл.. однако, почему то не работает =(
|
|||
|
||||
Sadok |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 74 Регистрация: 2.11.2004 Репутация: 1 Всего: 2 |
Каждый перловик должен написать свою поисковую систему
![]() |
|||
|
||||
Irokez |
|
|||
![]() индеец ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1180 Регистрация: 20.10.2004 Репутация: нет Всего: 53 |
а .. разобрался.. и вдобавок сократл код =)
Добавлено через 1 минуту и 52 секунды вопрос.. а нужно ли вообще условие if (!exists($urls{$site})) ? Без него вроде тоже работает и предупреждений не дает |
|||
|
||||
Irokez |
|
|||
![]() индеец ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1180 Регистрация: 20.10.2004 Репутация: нет Всего: 53 |
итого:
|
|||
|
||||
Shaggie |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 570 Регистрация: 21.12.2006 Где: outer space Репутация: нет Всего: 72 |
Irokez, обрати внимание - ведущие "http://", если они есть, должны быть обрезаны по условию задачи. |
||||
|
|||||
amg |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1145 Регистрация: 3.8.2006 Где: Новосибирск Репутация: 38 Всего: 50 |
Irokez, браво! Для новичка в перле - 5+.
Еще я просил не просто программу, а программу-фильтр (получает имя файла из параметра или текст из stdout), причем не случайно. На своем опыте знаю, что именно для обработки текстовых файлов фильтры предпочтительнее, т.к. сочетают гибкость использования с простотой написания. На каждую типовую задачу - свой коротенький фильтр, а потом их можно комбинировать через пайп. Еще при "разовой" обработке текстов мне очень помогают так называемые однострочники - это когда из командной строки вызывается перл с нужными опциями, текстом программы после опции -е и именем файла в качестве параметра. Опции у перла такие, что для множества задач текст программы получается очень коротким. Отсюда очередная задача: написать однострочник, который напечатает имена всех встречающихся в предыдущем тексте порталов (но без повторов). |
|||
|
||||
korob2001 |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2871 Регистрация: 29.12.2002 Репутация: 31 Всего: 61 |
Как вариант:
В конце можно указать несколько файлов со списком порталов и все они будут обработаны как один. Например:
Это сообщение отредактировал(а) korob2001 - 22.9.2007, 12:39 -------------------- "Время проходит", - привыкли говорить вы по неверному пониманию. "Время стоит - проходите вы". |
||||||
|
|||||||
Nab |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 582 Регистрация: 25.3.2006 Где: Kiev Репутация: 26 Всего: 37 |
Ну вот
![]() Модер с моря приехал небось, и с ходу в бой ![]() Задачка то была не для монстров от перла, типа тебя ![]() -------------------- Чтобы правильно задать вопрос нужно знать больше половины ответа... Perl Community FREESCO in Ukraine |
|||
|
||||
under_sun |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 141 Регистрация: 3.10.2007 Где: Ебург Репутация: нет Всего: 17 |
Если тебе еще нужны задачки, то могу подкинуть одну достаточно интересную задачку на сравнение выражений.
Задача заключается в следующем: Даны два выражения - например a+2bc-(b+c)^2+2*a и 3a-(b*b+c^2). Нужно сказать равны они или нет. Знак умножения может опускаться (т.е. 2bc, 2*bc, 2*b*c считается корректной записью). Также может быть любая вложенность скобок. Вот еще пара примерчиков: (x+z)(x+z)(x+z) и (x+z)^3 (a+b)(3+4+5-2*(a-2b)*3+2a-12b) и -4*(a+b)(a-3) Удачи ![]() --------------------
TMTOWTDI |
|||
|
||||
korob2001 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2871 Регистрация: 29.12.2002 Репутация: 31 Всего: 61 |
А чему равны переменные x, z, a, b, c?
-------------------- "Время проходит", - привыкли говорить вы по неверному пониманию. "Время стоит - проходите вы". |
|||
|
||||
under_sun |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 141 Регистрация: 3.10.2007 Где: Ебург Репутация: нет Всего: 17 |
Ни чему не равны, это произвольные переменные.
В этом то и фишка ![]() --------------------
TMTOWTDI |
|||
|
||||
arto |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
а вы сами знаете решение?
|
|||
|
||||
KSURi |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 887 Регистрация: 8.6.2006 Где: Russia Репутация: 20 Всего: 27 |
Если слегка упростить задачу: знак степени заменить на ** и убрать условие об опускании знака умножения, то задача решается в одну строку)
-------------------- Died at Life.pl line 21 |
|||
|
||||
arto |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
а доказательство сколько строк будет занимать?
|
|||
|
||||
KSURi |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 887 Регистрация: 8.6.2006 Где: Russia Репутация: 20 Всего: 27 |
Док-во чего? Я имел ввиду вот это:
Это сообщение отредактировал(а) KSURi - 16.10.2007, 23:38 -------------------- Died at Life.pl line 21 |
|||
|
||||
under_sun |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 141 Регистрация: 3.10.2007 Где: Ебург Репутация: нет Всего: 17 |
Да, я сдавал эту задачку в универе. KSURi, хочу напомнить, что выражения могут быть не только числовыми, но и буквенными ![]() --------------------
TMTOWTDI |
|||
|
||||
KSURi |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 887 Регистрация: 8.6.2006 Где: Russia Репутация: 20 Всего: 27 |
-------------------- Died at Life.pl line 21 |
|||
|
||||
under_sun |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 141 Регистрация: 3.10.2007 Где: Ебург Репутация: нет Всего: 17 |
eval -ом одним здесь ничего не сделать, т.к. он не понимает символьную арифметику )).
(a*7 будет 0 и a+с тоже) т.е. в твоем коде a*5 и a*7 будут равны, и все выражения в, которых нет цифр, тоже.... --------------------
TMTOWTDI |
|||
|
||||
KSURi |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 887 Регистрация: 8.6.2006 Где: Russia Репутация: 20 Всего: 27 |
Ну начальное условие не совсем точно было написано...
-------------------- Died at Life.pl line 21 |
|||
|
||||
amg |
|
||||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1145 Регистрация: 3.8.2006 Где: Новосибирск Репутация: 38 Всего: 50 |
Задача не то чтобы сложная, но довольно муторная (если решать ее так, как я это делал). Хотя, может, есть способ гораздо проще.
Получается
PS Исправил код (см. ниже) Это сообщение отредактировал(а) amg - 20.10.2007, 13:40 |
||||
|
|||||
under_sun |
|
||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 141 Регистрация: 3.10.2007 Где: Ебург Репутация: нет Всего: 17 |
amg, классное решение!
![]()
Согласен, что довольно муторная задача. Довольно много случаев.
Может и есть, но явно не у меня с моими 190 строками кода ![]() Неправильно обработанные примеры:
И 0 - тоже многочлен )). p.s. Если откровенно, у меня тоже работает не все )). --------------------
TMTOWTDI |
||||||
|
|||||||
amg |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1145 Регистрация: 3.8.2006 Где: Новосибирск Репутация: 38 Всего: 50 |
Исправил свой код от ошибок, про которые сказал under_sun, уже начал было комментарии вносить и код оптимизировать, хотел даже операцию деления реализовать, потом догадался на CPAN глянуть и понял, что все это зря. Конечно же, оказалось, что символьная алгебра на perl'е давным-давно реализована, причем в полном объеме.
|
|||
|
||||
tishaishii |
|
|||
![]() Создатель ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1262 Регистрация: 14.2.2006 Где: Москва Репутация: 4 Всего: 8 |
Есть группа менеджеров, каждый работает над группой проектов. Необходимо уровнять количество проектов у каждого менеджера так, чтобы минимально прервать связь менеджера со своими проектами.
Т.е. есть массив целых неотрицательных чисел. Находим среднее арифметическое. Далее - проблема: если просто заполнить массив средними значениями, то получится, что смешаем все проекты и поровну раздадим их всем менеджерам, а значит гарантированно разорвём большинство связей менеджера со своими проектами. Необходимо действовать вычитанием и сложением - обменом минимальным количеством проектов между менеджерами. Попытайся решить. |
|||
|
||||
ZLOvar |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 119 Регистрация: 4.6.2009 Где: Москва Репутация: нет Всего: 1 |
Всем привет, я тоже задачку хочу! только полегче чем верхнее))
![]() ![]() ![]() ![]() --------------------
Если хочешь чтобы работало - используй написанное.Если хочешь что-то понять - пиши сам. (с) |
|||
|
||||
Suppir |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 588 Регистрация: 20.4.2009 Репутация: нет Всего: нет |
Вот задачка:
ЕСТЬ: Строка $a, где-то в середине строки расположена запись даты 04.05.2007. Дата может быть с начальными нулями и без: 04.05.2007 или 4.5.2007 или 04.5.2007. Дата может быть любой в интервале от 01.01.1900 до "ближайшей субботы" - иначе выдавать ошибку. НУЖНО: Нужно в строке $b найти любое упоминание об этой дате. В строке $b дата может быть в следующих форматах: 04.05.2007 4/5/2007 г. 04 мая 2007 4 мае 2007года и подобные этим варианты Это сообщение отредактировал(а) Suppir - 4.6.2009, 11:17 |
|||
|
||||
ZLOvar |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 119 Регистрация: 4.6.2009 Где: Москва Репутация: нет Всего: 1 |
Suppir, а можно показать в коде? (мне так легче будет)
зарание спасибо) --------------------
Если хочешь чтобы работало - используй написанное.Если хочешь что-то понять - пиши сам. (с) |
|||
|
||||
shamber |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1422 Регистрация: 5.9.2006 Где: Россия Репутация: 17 Всего: 18 |
ZLOvar, вам как? Нужна задача и ее решение в одном посте ?
|
|||
|
||||
Suppir |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 588 Регистрация: 20.4.2009 Репутация: нет Всего: нет |
ZLOvar, так я предлагаю вам написать решение это задачи в Perl-коде
![]() . 1. Есть строка $a, в ней записана дата в формате 04.05.2007 (или 4.4.2007 или 04.4.2007). Нужно написать регулярное выражение, которое находит эту дату. 2. Написать условие, которое проверяет, чтобы найденная дата была в интервале от 01.01.1990 до "ближайшей субботы" (например, у этой субботы дата 06.06.2009) 3. Написать регулярное выражение, которое найдет эту же дату в следующих форматах: 04.05.2007 4/5/2007 г. 04 мая 2007 4 мае 2007года . Во всех строках даты могут располагаться в любом месте (начале, середине, конце). Желательно, чтобы все эти проверки были оптимизированы - представьте, что вам нужно "прочесать" миллион строк. Это сообщение отредактировал(а) Suppir - 4.6.2009, 12:54 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Perl" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |