lissyara писал(а):форичем перебрать и каждый сравнить любой дурак может

тока сравнений может быть слишком много - порядка 500x200x200 - боюсь тут даже перл загнётся...
а ты пробовал оно долго будет?
1) данные отсортипрованные? отсортировать можешь?
можно бинарные поиск
2)
http://www.opennet.ru/docs/RUS/perl_obz ... ntium.html
Код: Выделить всё
Обработка запросов
Суперпозиции могут так-же применяться для поиска строки в массиве строк. Например, чтобы определить, появляется ли данная строка $target в массиве строк @db:
use Quantum::Superpositions BINARY => ["CORE::index"];
$found = index(any(@db), $target) >= 0;
Определить, какая из строк базы данных содержат $target:
sub contains_str {
if (index($dbstr, $target) >= 0) {
return $dbstr;
}
}
$found = contains_str(any(@db), $target);
@matches = eigenstates $found;
Сравнение происходит гораздо быстрее, чем это умеет делать база данных, чтобы найти единственную строчку в любой из набора в базе.
sub contains_targ {
if (index($dbstr, $target) >= 0) {
return $target;
}
}
$found = contains_targ($string, any(@targets));
@matches = eigenstates $found;
Или в каждой одновременно
$found = contains_targ($string, all(@targets));
@matches = eigenstates $found;
3) посмотри тут _http://forum.vingrad.ru/forum/topic-250686/0.html
lissyara писал(а):как мне его к этому прикрутить:
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'

