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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ассоциация номера телефона со словами 
:(
    Опции темы
Gold Dragon
Дата 20.1.2012, 11:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



ну так кто-нибудь попробует описать свой алгоритм ?  smile 


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
krundetz
Дата 20.1.2012, 12:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вечный странник
***


Профиль
Группа: Завсегдатай
Сообщений: 1400
Регистрация: 14.6.2007
Где: НН(Сормово)

Репутация: 20
Всего: 69



Цитата(Gold Dragon @  20.1.2012,  11:16 Найти цитируемый пост)
пример?

попробую привести вечерком, если получиться реализовать, так как остались смутные воспоминания ещё с университетских времен
Цитата(ksnk @  20.1.2012,  11:26 Найти цитируемый пост)
На генерацию исходных данных для запроса УЖЕ уходит примерно секунда.

как раз по этому и предлагаю перенести на сторону БД, так как на PHP логика будет намного медленее

также возможно стоит глянуть в сторону теории конечных автоматов

Это сообщение отредактировал(а) krundetz - 20.1.2012, 12:20


--------------------
!цензоры - Хранитель стратегической жидкости
Группа ТГВ
Группа Нижний Новгород
user posted image
PM MAIL   Вверх
Gold Dragon
Дата 20.1.2012, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



Цитата(krundetz @  20.1.2012,  13:12 Найти цитируемый пост)
также возможно стоит глянуть в сторону теории конечных автоматов
это что такое?



--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
Gold Dragon
Дата 20.1.2012, 13:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



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

таблица
Код

CREATE TABLE IF NOT EXISTS `dictionary` (
  `word` varchar(10) NOT NULL,
  `num_ler` tinyint(2) NOT NULL,
  PRIMARY KEY (`word`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;


ну и сам код
Код

$time_start = getmicrotime();

$result = '';
$telephon = '4552033642';
$assn = array();
$word_ar = array();

$assn[0] = array('+');
$assn[1] = array('-');
$assn[2] = array('а', 'б', 'в', 'г');
$assn[3] = array('д', 'е', 'ё', 'ж', 'з');
$assn[4] = array('и', 'й', 'к', 'л');
$assn[5] = array('м', 'н', 'о', 'п');
$assn[6] = array('р', 'с', 'т', 'у');
$assn[7] = array('ф', 'х', 'ц', 'ч');
$assn[8] = array('ш', 'щ', 'ъ', 'ы', 'ь');
$assn[9] = array('э', 'ю', 'я');

$word_array = explode('0', $telephon);

foreach ($word_array as $word) {
    switch(strlen($word)){
        case 2:
            $word_ar[2] = letter_2($assn, $word);
            break;
        case 3:
            $word_ar[3] = letter_3($assn, $word);
            break;
        case 4:
            $word_ar[4] = letter_4($assn, $word);
            break;
        case 5:
            $word_ar[5] = letter_5($assn, $word);
            break;
        case 6:
            $word_ar[6] = letter_6($assn, $word);
            break;
        case 7:
            $word_ar[7] = letter_7($assn, $word);
            break;
        case 8:
            $word_ar[8] = letter_8($assn, $word);
            break;
        case 9:
            $word_ar[9] = letter_9($assn, $word);
            break;
        case 10:
            $word_ar[10] = letter_10($assn, $word);
            break;
    }
    if (strlen($word) == 5) {
    }
}

function letter_2($assn, $word){
    foreach ($assn[$word[0]] as $letter0) {
        foreach ($assn[$word[1]] as $letter1) {
            $tmp = getWord($letter0 . $letter1);
            if ($tmp) {
                $result[] = $tmp;
            }
        }
    }
    return $result;
}

function letter_3($assn, $word){
    foreach ($assn[$word[0]] as $letter0) {
        foreach ($assn[$word[1]] as $letter1) {
            foreach ($assn[$word[2]] as $letter2) {
                $tmp = getWord($letter0 . $letter1 . $letter2);
                if ($tmp) {
                    $result[] = $tmp;
                }
            }
        }
    }
    return $result;
}
function letter_4($assn, $word){
    foreach ($assn[$word[0]] as $letter0) {
        foreach ($assn[$word[1]] as $letter1) {
            foreach ($assn[$word[2]] as $letter2) {
                foreach ($assn[$word[3]] as $letter3) {
                    $tmp = getWord($letter0 . $letter1 . $letter2 . $letter3);
                    if ($tmp) {
                        $result[] = $tmp;
                    }
                }
            }
        }
    }
    return $result;
}

function letter_5($assn, $word){
    foreach ($assn[$word[0]] as $letter0) {
        foreach ($assn[$word[1]] as $letter1) {
            foreach ($assn[$word[2]] as $letter2) {
                foreach ($assn[$word[3]] as $letter3) {
                    foreach ($assn[$word[4]] as $letter4) {
                        $tmp = getWord($letter0 . $letter1 . $letter2 . $letter3 . $letter4);
                        if ($tmp) {
                            $result[] = $tmp;
                        }
                    }
                }
            }
        }
    }
    return $result;
}

function letter_6($assn, $word) {
    foreach ($assn[$word[0]] as $letter0) {
        foreach ($assn[$word[1]] as $letter1) {
            foreach ($assn[$word[2]] as $letter2) {
                foreach ($assn[$word[3]] as $letter3) {
                    foreach ($assn[$word[4]] as $letter4) {
                        foreach ($assn[$word[5]] as $letter5) {
                            $tmp = getWord($letter0 . $letter1 . $letter2 . $letter3 . $letter4 . $letter5);
                            if ($tmp) {
                                $result[] = $tmp;
                            }
                        }
                    }
                }
            }
        }
    }
    return $result;
}

function letter_7($assn, $word) {
    foreach ($assn[$word[0]] as $letter0) {
        foreach ($assn[$word[1]] as $letter1) {
            foreach ($assn[$word[2]] as $letter2) {
                foreach ($assn[$word[3]] as $letter3) {
                    foreach ($assn[$word[4]] as $letter4) {
                        foreach ($assn[$word[5]] as $letter5) {
                            foreach ($assn[$word[6]] as $letter6) {
                                $tmp = getWord($letter0 . $letter1 . $letter2 . $letter3 . $letter4 . $letter5 . $letter6);
                                if ($tmp) {
                                    $result[] = $tmp;
                                }
                            }
                        }
                    }
                }
            }
        }
    }
    return $result;
}

function letter_8($assn, $word) {
    foreach ($assn[$word[0]] as $letter0) {
        foreach ($assn[$word[1]] as $letter1) {
            foreach ($assn[$word[2]] as $letter2) {
                foreach ($assn[$word[3]] as $letter3) {
                    foreach ($assn[$word[4]] as $letter4) {
                        foreach ($assn[$word[5]] as $letter5) {
                            foreach ($assn[$word[6]] as $letter6) {
                                foreach ($assn[$word[7]] as $letter7) {
                                    $tmp = getWord($letter0 . $letter1 . $letter2 . $letter3 . $letter4 . $letter5 . $letter6 . $letter7);
                                    if ($tmp) {
                                        $result[] = $tmp;
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
    return $result;
}

function letter_9($assn, $word) {
    foreach ($assn[$word[0]] as $letter0) {
        foreach ($assn[$word[1]] as $letter1) {
            foreach ($assn[$word[2]] as $letter2) {
                foreach ($assn[$word[3]] as $letter3) {
                    foreach ($assn[$word[4]] as $letter4) {
                        foreach ($assn[$word[5]] as $letter5) {
                            foreach ($assn[$word[6]] as $letter6) {
                                foreach ($assn[$word[7]] as $letter7) {
                                    foreach ($assn[$word[8]] as $letter8) {
                                        $tmp = getWord($letter0 . $letter1 . $letter2 . $letter3 . $letter4 . $letter5 . $letter6 . $letter7 . $letter8);
                                        if ($tmp) {
                                            $result[] = $tmp;
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
    return $result;
}

function letter_10($assn, $word) {
    foreach ($assn[$word[0]] as $letter0) {
        foreach ($assn[$word[1]] as $letter1) {
            foreach ($assn[$word[2]] as $letter2) {
                foreach ($assn[$word[3]] as $letter3) {
                    foreach ($assn[$word[4]] as $letter4) {
                        foreach ($assn[$word[5]] as $letter5) {
                            foreach ($assn[$word[6]] as $letter6) {
                                foreach ($assn[$word[7]] as $letter7) {
                                    foreach ($assn[$word[8]] as $letter8) {
                                        foreach ($assn[$word[9]] as $letter9) {
                                            $tmp = getWord($letter0 . $letter1 . $letter2 . $letter3 . $letter4 . $letter5 . $letter6 . $letter7 . $letter8 . $letter9);
                                            if ($tmp) {
                                                $result[] = $tmp;
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
    return $result;
}


var_dump($word_ar);

function getWord($str){
    $result = false;
    $sql = "SELECT * FROM `dictionary` WHERE `word` = '".$str."'";
    $r = mysql_query($sql);
    while ($row = mysql_fetch_object($r)) {
        $result = $row->word;
    }
    return $result;
}




$time_end = getmicrotime();
$time = $time_end - $time_start;
echo "<hr>Время обработки: $time секунд";

function getmicrotime() {
    list($usec, $sec) = explode(" ", microtime());
    return ((float)$usec + (float)$sec);




--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
MoLeX
Дата 20.1.2012, 13:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



надо что-то делать с этими форешами


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
Gold Dragon
Дата 20.1.2012, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



а что?

в общем запустил я на проверку 10-значный номер без нулей - Лиса рухнула

2 - 0.03 сек
3 - 0.06 сек
4 - 0.16
5 - 0.67
6 - 2.59
7 - 12.88
8 - 51.46
9 - 253.73

Добавлено через 32 секунды
какие мысле есть ещё?

ps
утопическая идея получается  smile 


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
ksnk
Дата 20.1.2012, 15:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



Надо подойти с другой стороны.
Сделать словарь с поиском по буквам
Код

// слово - привет
$vocabulary=array(
...
   'п'=>array(... ,'р'=> array ( ...,'и'=> array ( ...,'в'=> array ( ...,'е'=> array ( ...,'т',=>null...)))))

));
)

потом, начиная от первых букв перебирать слова. Так можно сильно сократить дерево перебора. Если на очередной комбинации мы не смогли продвинутся "вглубь" словаря - нужно вернутся выше.

Есть ли сторонние сервисы, хранящие словари в таком виде?


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Gold Dragon
Дата 20.1.2012, 15:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



а разве база данных это не быстрее сделает по индексному полю?


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
ksnk
Дата 20.1.2012, 15:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



Цитата(Gold Dragon @  20.1.2012,  15:43 Найти цитируемый пост)
а разве база данных это не быстрее сделает по индексному полю? 

Нет. Так как база будет перебирать все варианты, а их только генерировать с предварительной фильтрацией - 200 секунд.


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Gold Dragon
Дата 20.1.2012, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



тогда я не понял твою логику...

Индекс в базе делает именно так же кажется.. видит "п" и сразу переходит к ним, видит вторую "о" и переходит к ним


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
ksnk
Дата 20.1.2012, 16:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



Цитата(Gold Dragon @  20.1.2012,  15:52 Найти цитируемый пост)
Индекс в базе делает именно так же кажется.. видит "п" и сразу переходит к ним, видит вторую "о" и переходит к ним 

База sql? Тогда сначала нужно эти данные для перехода ей сгенерировать и подсунуть. Именно этим - генерацией данных для sql запроса  и занимался твой foreach-монстр 200 секунд.



--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Gold Dragon
Дата 20.1.2012, 16:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



так, тогда чуть подробнее (лучше на примере) покажи что нужно делать


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
ksnk
Дата 20.1.2012, 18:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



Вечером продолжу, пока времени нет :(. 

Пока можно сделать словарь такой, о котором я говорил.

Для начала - нужно нарыть список слов. Поискав системы проверки орфографии - наткнулся где-то на ссылку на словарь hunspell - zip архив с плагином для непонятно чего.
Оттуда нам будет интересен файл ru_RU.dic - список слов, с указанием части речи. Он 2 mб, так что сами качайте. Слова в кодировке koi-8, так что без небольшого шаманства не получилось.

Код

<?
ini_set('memory_limit','256M');

$kw = array(
      128, 129, 130, 131, 132, 133, 134, 135, 136, 137
    , 138, 139, 140, 141, 142, 143, 144, 145, 146, 147
    , 148, 149, 150, 151, 152, 153, 154, 155, 156, 157
    , 158, 159, 160, 161, 162, 184, 164, 165, 166, 167
    , 168, 169, 170, 171, 172, 173, 174, 175, 176, 177
    , 178, 179, 180, 181, 182, 183, 184, 185, 186, 187
    , 188, 189, 190, 191, 254, 224, 225, 246, 228, 229
    , 244, 227, 245, 232, 233, 234, 235, 236, 237, 238
    , 239, 255, 240, 241, 242, 243, 230, 226, 252, 251
    , 231, 248, 253, 249, 247, 250, 222, 192, 193, 214
    , 196, 197, 212, 195, 213, 200, 201, 202, 203, 204
    , 205, 206, 207, 223, 208, 209, 210, 211, 198, 194
    , 220, 219, 199, 216, 221, 217, 215, 218);
     
$handle = fopen("ru_RU.dic", "rb");
$contents='';
$words=array();

$vocabular=array();

mkt();
while(!feof($handle )){
    $contents.= fread($handle, 1024);
   $words=preg_split("#(/\w+)?\s#",$contents );
    foreach($words as $w){
        $ptr=&$vocabular;
        for($i=0;$i<strlen($w);$i++){
            $c = ord($w[$i]);

            if ($c>128) {
                $c=chr($kw[$c-128]);
                if(!isset($ptr[$c])) $ptr[$c]=array();
                $ptr=&$ptr[$c];
            } else 
                break;

        }
    }
    $lastA=strrpos($contents,"\n");
    $contents=substr($contents,$lastA);
}
fclose($handle);
file_put_contents('hunspell.dic.php','<? return '
    .str_replace('    ',' ',
        str_replace('  ',' ',str_replace('  ',' ',
            str_replace('  ',' ',str_replace('  ',' ',
                var_export($vocabular,true)
        ))))).';');



простенький конвертер  smile 
множество str_replace вставлено от того, что var_export генерирует 41мб строку. После реплейса она становится в 13мб, что все-таки чуть поменьше, чем 40.


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Gold Dragon
Дата 20.1.2012, 18:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



ksnk, ты прикололся? конвертер?  smile  А не пробовал просто воспользоваться к примеру Notepad++? ;)

Кстати, если нужно , то могу словари дать. Этот хиленький, всего на 14 тысяч слов.. у меня есть нормальный на 90 с лишним + примерно 50 с разными окончаниями (и кажется с жаргонизмами)

Это сообщение отредактировал(а) Gold Dragon - 20.1.2012, 18:53


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
ksnk
Дата 20.1.2012, 20:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



Код

 
ini_set('memory_limit','256M');
function mktm(){
    static $tm ; $ttm = $tm ;$tm= microtime(1) ;
    return $tm-$ttm ;
} ; mktm();
echo 'memory before:'.memory_get_usage();
$vocab=include("hunspell.dic.php");
echo ',after:'.memory_get_usage().'<br>';

$result = '';
$telephon = '22263242666';//6662';//овес
$assn = array();
$assn[0] = array('+');
$assn[1] = array('-');
$assn[2] = array('а', 'б', 'в', 'г');
$assn[3] = array('д', 'е', 'ё', 'ж', 'з');
$assn[4] = array('и', 'й', 'к', 'л');
$assn[5] = array('м', 'н', 'о', 'п');
$assn[6] = array('р', 'с', 'т', 'у');
$assn[7] = array('ф', 'х', 'ц', 'ч');
$assn[8] = array('ш', 'щ', 'ъ', 'ы', 'ь');
$assn[9] = array('э', 'ю', 'я');

function nextNumber(&$voc,$x,$cnt,$result){
  global $assn,$telephon ;
  if($x>=$cnt){echo $result.'...<br>'; return; }
  $n=$telephon[$x];
  if(isset($voc['@'])){
        echo $result.'<br>'; 
  }
  foreach($assn[$n] as $c){// 29
    if(isset($voc[$c])){
        nextNumber(&$voc[$c],$x+1,$cnt,$result.$c);
    }
  }
}

for($i=0;$i<strlen($telephon )-3;$i++){// 29
    echo'<h3>'.$i.'</h3>'; 
    nextNumber($vocab,$i,strlen($telephon ),'');
}

printf(" we spent %f sec<br>",mktm());



Присоединённый файл ( Кол-во скачиваний: 1 )
Присоединённый файл  hunspell.dic.zip 265,40 Kb


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




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


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

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