Модераторы: Aliance, skyboy, MoLeX, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> оптимизация текстовой обработки, как ускорить 
:(
    Опции темы
motorway
  Дата 6.12.2009, 18:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 578
Регистрация: 2.3.2008

Репутация: нет
Всего: 0



Есть большой текстовый файл со строками вида:

(word1)a|b,c,d
(word1)b|e,f,g,a
(word2)c|h,a
(word2)f|w,a,c
...

Нужно на выходе получить строки такие:

(word1)a|b,c,d,e,f,g
(word2)c|h,a,f,w
и т.п.

То есть берем первую строку и ищем в остальных, есть ли в них вхождение "a" (слова перед | ) и при этом слово в скобках должно быть в начале таким же, как и у исходного слова проверяемого (word1).
После этого объединяем все это в одну строку, там где такое вхождение есть, и эти строки можно дальше не рассматривать.

Проблема в том, что если исходных строк около 150к, а алгоритм у меня получается с двойным циклом (для каждой строки проверяются все остальные), то это все приводит к 150к^2, и все виснет.
Можно ли обойтись одним циклом? Желательно после каждого прохода добавлять полученную строку в результирующий файл.

Это сообщение отредактировал(а) motorway - 6.12.2009, 18:36
PM MAIL   Вверх
Pitlord
Дата 6.12.2009, 19:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 246
Регистрация: 31.10.2009

Репутация: нет
Всего: 7



Самый простой вариант в данном случае — на каждое слово создать отдельный временный файл, а после обработки всех строк — объединить содержимое этих файлов.

Можно ещё запихнуть всё в таблицу СУБД через INSERT ... ON DUPLICATE KEY UPDATE.

Добавлено через 8 минут и 11 секунд
Цитата(motorway @  6.12.2009,  18:34 Найти цитируемый пост)
a|b,c,d

Набор возможных значений (a, b, c, ...), вообще говоря, заранее известен? Тогда для второго варианта будет достаточно битового поля.

Это сообщение отредактировал(а) Pitlord - 6.12.2009, 19:39
PM MAIL   Вверх
motorway
Дата 6.12.2009, 19:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 578
Регистрация: 2.3.2008

Репутация: нет
Всего: 0



Т.е. цикл по любому будет вложенным?
PM MAIL   Вверх
Pitlord
Дата 6.12.2009, 19:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 246
Регистрация: 31.10.2009

Репутация: нет
Всего: 7



Цитата(motorway @  6.12.2009,  19:47 Найти цитируемый пост)
Т.е. цикл по любому будет вложенным? 

Нет
PM MAIL   Вверх
motorway
Дата 6.12.2009, 21:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 578
Регистрация: 2.3.2008

Репутация: нет
Всего: 0



А как сделать указанную обработку "в один присест"? То есть, чтобы число прогонов цикла было не больше числа всех строк в файле?
PM MAIL   Вверх
Simpliest
Дата 6.12.2009, 21:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 625
Регистрация: 1.9.2009

Репутация: нет
Всего: 3



Для начала отсортировать


--------------------
user posted image
PM   Вверх
Pitlord
Дата 6.12.2009, 21:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 246
Регистрация: 31.10.2009

Репутация: нет
Всего: 7



Цитата(motorway @  6.12.2009,  21:30 Найти цитируемый пост)
А как сделать указанную обработку "в один присест"? То есть, чтобы число прогонов цикла было не больше числа всех строк в файле?

Я уже написал как это сделать. Причём два варианта привёл.

Это сообщение отредактировал(а) Pitlord - 6.12.2009, 21:42
PM MAIL   Вверх
Simpliest
Дата 6.12.2009, 21:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 625
Регистрация: 1.9.2009

Репутация: нет
Всего: 3



Не гоните, зачем тут БД?

прочитать в массив.

посортировать по первым надцати символам, которые являются словом.

Обработка:
1. Берем первый элемент, берем из него слово, остальное explode() и записываем в массив результатов
2. Берем следующий элемент,
2.а. если слово совпадает, то выкусываем, explode() и добавляем к массиву результататов
2. б. если не совпадает, то для набора делаем array_unique, implode() и добавляем слово и сохраняем где-нибудь.
3. Обнуляем массив результатов
4. С несовпавшим элементом и словом идем на обработку в начало.




--------------------
user posted image
PM   Вверх
Pitlord
Дата 6.12.2009, 21:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 246
Регистрация: 31.10.2009

Репутация: нет
Всего: 7



Цитата(Simpliest @  6.12.2009,  21:48 Найти цитируемый пост)
посортировать по первым надцати символам, которые являются словом.

Что это за алгоритм сортировки со сложностью O(n)?
PM MAIL   Вверх
motorway
Дата 6.12.2009, 21:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 578
Регистрация: 2.3.2008

Репутация: нет
Всего: 0



Набор слов неизвестен заранее. Честно говоря, не очень понимаю, что даст сортировка (имеется в виду сортировка по началу строки (по алфавиту)?). Вроде надо же будет все равно для каждой строки проверять, есть ли в остальных строках слово это (нужно искать вхождение между запятыми после символа "|" ).
Пока что в моем коде было 2 for each.

Это сообщение отредактировал(а) motorway - 6.12.2009, 21:59
PM MAIL   Вверх
Pitlord
Дата 6.12.2009, 22:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 246
Регистрация: 31.10.2009

Репутация: нет
Всего: 7



Цитата(motorway @  6.12.2009,  21:58 Найти цитируемый пост)
Набор слов неизвестен заранее

А значений "a, b, c, ..."?

Добавлено через 37 секунд
Имеется ввиду множество всех этих значений — известно?
PM MAIL   Вверх
Simpliest
Дата 6.12.2009, 22:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 625
Регистрация: 1.9.2009

Репутация: нет
Всего: 3



Цитата(Pitlord @  6.12.2009,  20:52 Найти цитируемый пост)
Что это за алгоритм сортировки со сложностью O(n)? 

парень, если ты полагаешь что БД не занимается сортировкой - то застрелись.

И не надо выдумывать то, о чем не говорилось.

Обработка будет именно со сложностью O(n), но данные должны прийти на обработку отсортированными.


--------------------
user posted image
PM   Вверх
motorway
Дата 6.12.2009, 22:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 578
Регистрация: 2.3.2008

Репутация: нет
Всего: 0



В общем, есть исходный файл на входе со всеми этими словами. Если он уже есть, значит, вроде что-то известно. Но так как он весьма большой, это дает разве что-нибудь? Этих слов там может быть миллион или больше.
Основное, что нужно - чтобы комп не зависал при обработке, и она была не квадратичной зависимости от объема данных. После получения каждой строки результирующей ее сохранять в файл, чтобы в памяти не держать ее.

Это сообщение отредактировал(а) motorway - 6.12.2009, 22:06
PM MAIL   Вверх
Pitlord
Дата 6.12.2009, 22:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 246
Регистрация: 31.10.2009

Репутация: нет
Всего: 7



Цитата(Simpliest @  6.12.2009,  22:02 Найти цитируемый пост)
парень, если ты полагаешь что БД не занимается сортировкой - то застрелись.

Причём тут БД? Я задал вопрос — где ответ? Или в твоём понимании время сортировки будет зависить от количества элементов линейно? Приведи реальный код.
PM MAIL   Вверх
Simpliest
Дата 6.12.2009, 22:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 625
Регистрация: 1.9.2009

Репутация: нет
Всего: 3



Цитата(motorway @  6.12.2009,  20:58 Найти цитируемый пост)
Вроде надо же будет все равно для каждой строки проверять, есть ли в остальных строках слово

не надо. Слова будут идти подряд. Если в следующей записи слово изменилось, значит его больше не будет.
искать | необязательно. Можно на этапе чтения использовать explode("|", $line);
сортировать ты будешь по первым элементам подмассивов, делается это при помощи array_multisort()


--------------------
user posted image
PM   Вверх
Pitlord
Дата 6.12.2009, 22:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 246
Регистрация: 31.10.2009

Репутация: нет
Всего: 7



Цитата(motorway @  6.12.2009,  22:04 Найти цитируемый пост)
В общем, есть исходный файл на входе со всеми этими словами. Если он уже есть, значит, вроде что-то известно. Но так как он весьма большой, это дает разве что-нибудь? Этих слов там может быть миллион или больше

То, что после слова, после символа "|" — что это?
PM MAIL   Вверх
Simpliest
Дата 6.12.2009, 22:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 625
Регистрация: 1.9.2009

Репутация: нет
Всего: 3



Цитата(Pitlord @  6.12.2009,  21:06 Найти цитируемый пост)
Я задал вопрос — где ответ? Или в твоём понимании время сортировки будет зависить от количества элементов линейно? Приведи реальный код. 

В моем понимании ты не умеешь читать. Вот тебе был ответ.
Цитата(Simpliest @  6.12.2009,  21:02 Найти цитируемый пост)
И не надо выдумывать то, о чем не говорилось.

Обработка будет именно со сложностью O(n), но данные должны прийти на обработку отсортированными. 


Код

// $a у нас отсортированный массив
foreach($a as $v) {
// обрабатываем со сложностью O(n).
}


Так доступно? Или разжевать, как школьнику?


--------------------
user posted image
PM   Вверх
Pitlord
Дата 6.12.2009, 22:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 246
Регистрация: 31.10.2009

Репутация: нет
Всего: 7



Цитата(Simpliest @  6.12.2009,  22:09 Найти цитируемый пост)
В моем понимании ты не умеешь читать. Вот тебе был ответ.

Я тебя спрашиваю ещё раз: как ты будешь отсортировывать?
PM MAIL   Вверх
motorway
Дата 6.12.2009, 22:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 578
Регистрация: 2.3.2008

Репутация: нет
Всего: 0



Я могу дать код, который у меня. Пока что не оч. понял, как предлагается сделать. Ну допустим, что мы взяли первую строку исходного файла - там основное слово перед чертой, которое мы должны искать - "a". И нужно определить, есть ли оно во всех строках других, если есть, то объединить их по тому принципу сверху. Куда мы денемся от этого перебора всех строк в двойном цикле?

PM MAIL   Вверх
Simpliest
Дата 6.12.2009, 22:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 625
Регистрация: 1.9.2009

Репутация: нет
Всего: 3



Цитата(motorway @  6.12.2009,  21:04 Найти цитируемый пост)
Основное, что нужно - чтобы комп не зависал при обработке, и она была не квадратичной зависимости от объема данных. 

 smile Отсортируй данные до обработки!!! или убейся.


--------------------
user posted image
PM   Вверх
motorway
Дата 6.12.2009, 22:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 578
Регистрация: 2.3.2008

Репутация: нет
Всего: 0



Цитата

То, что после слова, после символа "|" — что это? 

Некоторый набор слов, разделенный запятыми. В них и нужно искать вхождение слова перед |, но после скобки ")". Если оно есть, объединяем этот набор слов с искомым словом.

Добавлено через 3 минуты и 9 секунд
Цитата

Отсортируй данные до обработки!!! или убейся. 

Неплохо бы понять, как именно их сортировать. И всю структуру получившегося алгоритма согласно твоему предложению.
Лучше увидеть это в виде кода  smile 

PM MAIL   Вверх
Pitlord
Дата 6.12.2009, 22:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 246
Регистрация: 31.10.2009

Репутация: нет
Всего: 7



Цитата(motorway @  6.12.2009,  22:10 Найти цитируемый пост)
Пока что не оч. понял, как предлагается сделать

Что именно? Уже три варианта предложено.
PM MAIL   Вверх
Simpliest
Дата 6.12.2009, 22:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 625
Регистрация: 1.9.2009

Репутация: нет
Всего: 3



Цитата(Pitlord @  6.12.2009,  21:10 Найти цитируемый пост)
Я тебя спрашиваю ещё раз: как ты будешь отсортировывать? 

Надцатью различными способами.

Захочу - еще до записи всех слов в файл буду сортировать.

Захочу - в процессе подготовки файла буду сортировать.
Алгоритмы Шелла, Квик, Вставкой, Блочный, а может предпочту встроенные функции PHP sort, usort, array_multisort
Тебе это сильно помогло?


--------------------
user posted image
PM   Вверх
motorway
Дата 6.12.2009, 22:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 578
Регистрация: 2.3.2008

Репутация: нет
Всего: 0



Вот я не понимаю, берем первую строку и ищем во всех других, есть ли вхождение нужной подстроки среди элементов через запятую после знака | в других строках.
Нашли что-то, сформировали строку. Переходим к следующей строке исходных данных.
И опять перебираем все строки на наличие второго элемента (некоторые из них могли исчезнуть, но объем примерно тот же).
И вот виден вложенный цикл. Не понимаю, куда он может испариться в принципе.

PM MAIL   Вверх
Simpliest
Дата 6.12.2009, 22:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 625
Регистрация: 1.9.2009

Репутация: нет
Всего: 3



Цитата(motorway @  6.12.2009,  21:12 Найти цитируемый пост)
 В них и нужно искать вхождение слова перед |, но после скобки ")". Если оно есть, объединяем этот набор слов с искомым словом

Бгг...

(word1)a|b,c,d
(word1)b|e,f,g,a
(word2)c|h,a
(word2)f|w,a,c

ищем букву а. Она есть во всех 4х строках мы ее ищем везде? Или все же как в первом сообщении, только при условии word1?

Цитата(motorway @  6.12.2009,  21:12 Найти цитируемый пост)
Лучше увидеть это в виде кода  

Кода не будет.


--------------------
user posted image
PM   Вверх
motorway
Дата 6.12.2009, 22:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 578
Регистрация: 2.3.2008

Репутация: нет
Всего: 0



только если word1. Но далее мы берем вторую строку, там уже будет b - и опять начинаем искать среди всех строк.

Это сообщение отредактировал(а) motorway - 6.12.2009, 22:26
PM MAIL   Вверх
Simpliest
Дата 6.12.2009, 22:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 625
Регистрация: 1.9.2009

Репутация: нет
Всего: 3



Цитата(motorway @  6.12.2009,  21:21 Найти цитируемый пост)
И вот виден вложенный цикл. Не понимаю, куда он может испариться в принципе.

Парень, если ты бегаешь по всему миллиону слов, то у тебя алгоритм сложности O(n^2) и сортировка до одного места.

Если все же алгоритм зависит от слова word1/word2 etc.
То чем больше у тебя разных слов вида word1/word2,
тем ближе алгоритм к С*O(n)

Где C  у тебя отношение числа слов к числу уникальных слов.


--------------------
user posted image
PM   Вверх
motorway
Дата 6.12.2009, 22:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 578
Регистрация: 2.3.2008

Репутация: нет
Всего: 0



Ну вот я и говорю, куда же денется эта самая сложность? На самом деле, слов в скобках типа word1, word2 мало очень по сравнению с другими словами a,b,c,d.
Может, даже меньше 10. А этих - тысячи, мильоны.
PM MAIL   Вверх
Simpliest
Дата 6.12.2009, 22:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 625
Регистрация: 1.9.2009

Репутация: нет
Всего: 3



Цитата(motorway @  6.12.2009,  21:25 Найти цитируемый пост)
b - и опять начинаем искать среди всех строк.

Не надо нам искать среди всех. А только среди тех кто имеет word1 и находится ниже.

(word1)a|b,c,d
(word1)b|e,f,g,a

Или ты хочешь получить такой результат?
(word1)a|b,c,d,e,f,g
(word1)b|e,f,g,a,с,d




--------------------
user posted image
PM   Вверх
motorway
Дата 6.12.2009, 22:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 578
Регистрация: 2.3.2008

Репутация: нет
Всего: 0



Т.е. слова word1,word2... в скобках (в начале строки) у многих слов одинаковы

Добавлено @ 22:31
Ну да, но чтобы узнать, имеется ли там word1, нужно все равно проверить каждую строку , пусть и ниже

Это сообщение отредактировал(а) motorway - 6.12.2009, 22:31
PM MAIL   Вверх
Simpliest
Дата 6.12.2009, 22:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 625
Регистрация: 1.9.2009

Репутация: нет
Всего: 3



Цитата(motorway @  6.12.2009,  21:29 Найти цитируемый пост)
 А этих - тысячи, мильоны

ты врешь :(
а логика задачи тупая.

Что конкретно ты хочешь получить?

Как по-твоему должны быть обработаны такие данные? Какой результат?
(word1)a|b,c,d
(word1)b|e,f,g,a
(word1)r|t,q,w,y

Добавлено через 1 минуту и 54 секунды
Цитата(motorway @  6.12.2009,  21:30 Найти цитируемый пост)
имеется ли там word1, нужно все равно проверить каждую строку , пусть и ниже

 smile  smile  smile  smile  smile 
Да ты гонишь. Нам не нужно проверять каждую строку ниже для того чтобы узнать если там там оно.
Если его не будет в следующей строке - его дальше уже нет!!!


--------------------
user posted image
PM   Вверх
motorway
Дата 6.12.2009, 22:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 578
Регистрация: 2.3.2008

Репутация: нет
Всего: 0



Я знаю, что тупая, т.к. пишу этот скрипт по просьбе чужой. По его словам, там база около миллиона слов или больше.
Здесь будет вроде

(word1)a|b,c,d,e,f,g
(word1)r|t,q,w,y
PM MAIL   Вверх
Simpliest
Дата 6.12.2009, 22:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 625
Регистрация: 1.9.2009

Репутация: нет
Всего: 3



Короче. Что за задача.
Какая конкретная конечная цель.

Добавлено через 59 секунд
Цитата(motorway @  6.12.2009,  21:35 Найти цитируемый пост)
Здесь будет вроде
(word1)a|b,c,d,e,f,g
(word1)r|t,q,w,y 

Вроде? Или точно будет такой результат?
Если ты не знаешь что ты хочешь получить в итоге - то никто этого не знает.


--------------------
user posted image
PM   Вверх
motorway
Дата 6.12.2009, 22:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 578
Регистрация: 2.3.2008

Репутация: нет
Всего: 0



Цитата

Если его не будет в следующей строке - его дальше уже нет!!! 

Почему? Оно же не уникальное, может быть несколько раз. Или имелось в виду действие сортировки?

Задача только такая:

из исходной базы вида

(word1)a|b,c
(word1)b|c,d,a
(word2)c|a,f,h 
(word1)d|e
(word1)f|d

получить строки такого вида:

(word1)a|b,c,d
(word2)c|a,f,h
(word1)d|e,f

Добавлено через 4 минуты и 3 секунды
Короче, мне нужно понять, можно ли здесь просто убрать квадратичность или это свойство алгоритма такого. Ну и почему может виснуть комп при такой обработке, как убрать это.

Это сообщение отредактировал(а) motorway - 6.12.2009, 22:42
PM MAIL   Вверх
Simpliest
Дата 6.12.2009, 22:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 625
Регистрация: 1.9.2009

Репутация: нет
Всего: 3



Цитата(motorway @  6.12.2009,  21:40 Найти цитируемый пост)
Задача только такая:
из исходной базы вида

получить строки такого вида:

Это не задача. 
Извини, но или это бред из какого-то учебника и тогда плевать на миллионы - их не будет.
Или есть реальная задача.

вобщем приводи все к виду


(word1)a|b
(word1)a|c
(word1)a|d
(word1)c|a
(word1)c|f
(word1)c|h

сортируй и обрабатывай. В такой форме данных можно будет совместить обработку с сортировкой.

При постановке задачи пойди туда не знаю куда, принеси то, не знаю что...
Я получается только зря наехал на Pitlord.




--------------------
user posted image
PM   Вверх
motorway
Дата 6.12.2009, 23:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 578
Регистрация: 2.3.2008

Репутация: нет
Всего: 0



Я понимаю, что задача корявая, но такую мне дали. Словами это формулируется так: для каждой строки исх. базы найти строки, в которых после знака | между запятыми содержится в точности подстрока исходной строки до знака | (т.е. слово после скобки и перед |, напр. "a") и в результирующую строку записать все эл-ты этих строк без повторов. При этом строки с найденными вхождениями можно удалять.
В принципе, ничего потустороннего нет. Я бы сам такое не стал делать, просто тут заказали такой скрипт сделать

Это сообщение отредактировал(а) motorway - 6.12.2009, 23:34
PM MAIL   Вверх
NewDima
Дата 9.12.2009, 15:27 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 922
Регистрация: 20.2.2006
Где: <?here?>

Репутация: -1
Всего: 12



motorway, у вас явные проблемы с постановкой задачи. Попробуйте перечитать то, что написали
PM ICQ   Вверх
Страницы: (3) [Все] 1 2 3 
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Тексты | Следующая тема »


 




[ Время генерации скрипта: 0.0771 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.