![]() |
|
Модераторы: korob2001, ginnie |
![]()
|
|
| Danissimo |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 150 Регистрация: 14.8.2006 Где: Санкт-Петербург Репутация: 1 Всего: 1 |
Ты про объединение? или про разность? Объединение работает. Разность тоже работает. И выдает правильный результат. Имейте в виду, что разность -- некомутативная операция. Так что все правильно работает.
Другими словами, если множество X полностью является подмножеством Y, то вычитая из X Y, получаем пустое множество. Добавлено @ 13:39 А вот иллюстрация: my @array2 = qw( a b c d i f ); my @array1 = qw( b d g ); my %x; @x{@array1} = (1) x @array1; delete @x{@array2}; print join ' ', sort keys %x; Здесь множество array1 не является полным подмножеством array2. Что и сказывается на результате. |
|||
|
||||
| nitr |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2543 Регистрация: 10.2.2006 Где: Россия :) Репутация: 37 Всего: 84 |
amg :) ты меня вынуждаешь извращаться :)
и кста, Danissimo, свой код "подсвечивай"! |
|||
|
||||
| amg |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1145 Регистрация: 3.8.2006 Где: Новосибирск Репутация: 38 Всего: 50 |
Я про операцию, которая в некоторых книжках называется "симметричная разность". Перечитав еще раз самый первый пост, думаю, что именно коммутативная "симметричная разность" и была нужна. Кстати, nitr, понимаю, что выгляжу полным занудой, но твой последний код опять не работает, если поменять @array2 и @array1. (Чтобы работал, надо в нем && заменить на and). |
|||
|
||||
| meridian |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 95 Регистрация: 8.11.2005 Репутация: нет Всего: нет |
Спасибо sharq, amg, nitr и остальным извращенцам
Работает как надо, проверил все. |
|||
|
||||
| Nab |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 582 Регистрация: 25.3.2006 Где: Kiev Репутация: 26 Всего: 37 |
Я вот тут посмотрел вашу писанину, и таки думаю что у amg идея была лучшая, но вы все одно кудато не туда рвонули
вот вариант в одну строку :
даст результат если в изначальных масивах значения уникальны, то есть в сумме дают 2, ну или четное число. кстати вариант sharq тоже этим страдает... А этот вариант дает разницу двух массивов, при условии что значения массивов не содержат символов пробела
можно тут конечно извратиться с заменой стандартного разделителя, но эт уже не то Это сообщение отредактировал(а) Nab - 18.9.2006, 07:32 -------------------- Чтобы правильно задать вопрос нужно знать больше половины ответа... Perl Community FREESCO in Ukraine |
||||
|
|||||
| Nab |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 582 Регистрация: 25.3.2006 Где: Kiev Репутация: 26 Всего: 37 |
Вот блин дурная голова рукам спокоя не дает
Упростил...
-------------------- Чтобы правильно задать вопрос нужно знать больше половины ответа... Perl Community FREESCO in Ukraine |
|||
|
||||
| amg |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1145 Регистрация: 3.8.2006 Где: Новосибирск Репутация: 38 Всего: 50 |
Nab, респект!
Внёс твой однострочник (немного его модифицировав) в свою коллекцию Perl one-liners (там как раз разности не хватало)
|
|||
|
||||
| Nab |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 582 Регистрация: 25.3.2006 Где: Kiev Репутация: 26 Всего: 37 |
знаешь почему у меня в конце звезда стоит и плюсик?
Звезда потому что на последней строке файла окончания нет, и твоя регулярка не сработает, а моя сработает. А плюсик, это потому что одинаковых строк в файле у тебя может быть несколько, но удалятся только две соседние, а с плюсом, все возможные... А вот первый плюсик у тебя не знаю к чему приведет, по крайней мере куча просто переводов строк у тебя не удалятся... если же тебя такое поведение устраивает, то можно еще более упростить твою регулярку...
-------------------- Чтобы правильно задать вопрос нужно знать больше половины ответа... Perl Community FREESCO in Ukraine |
|||
|
||||
![]()
|
| Правила форума "Perl" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |