Вернуться   Форум SAPE.RU > Другое > Курилка

-->
Ответ
 
Опции темы
Старый 29.12.2012, 20:51   #11
Дикий
 
Аватар для D.iK.iJ
 
Регистрация: 02.06.2007
Адрес: <Noindex>
Сообщений: 2,551
Вес репутации: 355
D.iK.iJ - прекрасное будущееD.iK.iJ - прекрасное будущееD.iK.iJ - прекрасное будущееD.iK.iJ - прекрасное будущееD.iK.iJ - прекрасное будущееD.iK.iJ - прекрасное будущееD.iK.iJ - прекрасное будущееD.iK.iJ - прекрасное будущееD.iK.iJ - прекрасное будущееD.iK.iJ - прекрасное будущееD.iK.iJ - прекрасное будущее
По умолчанию

Sergius, спасибо. Если с PHP сегодня опять не выйдет, обязательно попробую.
D.iK.iJ вне форума   Ответить с цитированием
Старый 29.12.2012, 20:53   #12
Мастер
 
Аватар для Sergius
 
Регистрация: 09.06.2009
Сообщений: 602
Вес репутации: 217
Sergius - прекрасное будущееSergius - прекрасное будущееSergius - прекрасное будущееSergius - прекрасное будущееSergius - прекрасное будущееSergius - прекрасное будущееSergius - прекрасное будущееSergius - прекрасное будущееSergius - прекрасное будущееSergius - прекрасное будущееSergius - прекрасное будущее
По умолчанию

Только поосторожнее))Я не проверял))
Sergius вне форума   Ответить с цитированием
Старый 29.12.2012, 20:58   #13
Дикий
 
Аватар для D.iK.iJ
 
Регистрация: 02.06.2007
Адрес: <Noindex>
Сообщений: 2,551
Вес репутации: 355
D.iK.iJ - прекрасное будущееD.iK.iJ - прекрасное будущееD.iK.iJ - прекрасное будущееD.iK.iJ - прекрасное будущееD.iK.iJ - прекрасное будущееD.iK.iJ - прекрасное будущееD.iK.iJ - прекрасное будущееD.iK.iJ - прекрасное будущееD.iK.iJ - прекрасное будущееD.iK.iJ - прекрасное будущееD.iK.iJ - прекрасное будущее
Red face

mnogoclipov, тупит, так как это Дэнвер под Виндоус XP на старом жутко тормознутом ноутбуке Acer
Я даже не вспомню с чего начинал и что последнее пробовал, но один из скриптов был такой:


PHP код:
<?
ini_set
("memory_limit""1000M");
@
set_time_limit (300000);

$words=file(getenv("DOCUMENT_ROOT")."/words.dat");
$words=array_unique($words);
sort($words);

$i=count($words); echo "Всего строк: <b>$i</b><br><br>";
$words2="";$words2[]=""$words3="";
$i2="0";


do{
$dt=explode("|"$words[$i2]);
$i_dt=count($dt);

if (
$i_dt="2"){
$dt=str_replace("\r\n","",$dt);
if (!
in_array($dt[0], $words2) and !in_array($dt[1], $words2)) $words3.=$words[$i2];
$words2[]=$dt[0];
$words2[]=$dt[1];


}elseif(
$i_dt="3"){
$dt=str_replace("\r\n","",$dt);
if (!
in_array($dt[0], $words2) and !in_array($dt[1], $words2) and !in_array($dt[2], $words2)) $words3.=$words[$i2];
$words2[]=$dt[0];
$words2[]=$dt[1];
$words2[]=$dt[2];


}elseif(
$i_dt="4"){
$dt=str_replace("\r\n","",$dt);
if (!
in_array($dt[0], $words2) and !in_array($dt[1], $words2) and !in_array($dt[2], $words2) and !in_array($dt[3], $words2)) $words3.=$words[$i2];
$words2[]=$dt[0];
$words2[]=$dt[1];
$words2[]=$dt[2];
$words2[]=$dt[3];

}elseif(
$i_dt="5"){
$dt=str_replace("\r\n","",$dt);
if (!
in_array($dt[0], $words2) and !in_array($dt[1], $words2) and !in_array($dt[2], $words2) and !in_array($dt[3], $words2) and !in_array($dt[4], $words2)) $words3.=$words[$i2];
$words2[]=$dt[0];
$words2[]=$dt[1];
$words2[]=$dt[2];
$words2[]=$dt[3];
$words2[]=$dt[4];

}else{
$dt=str_replace("\r\n","",$dt);
if (!
in_array($dt[0], $words2) and !in_array($dt[1], $words2) and !in_array($dt[2], $words2) and !in_array($dt[3], $words2) and !in_array($dt[4], $words2) and !in_array($dt[5], $words2)) $words3.=$words[$i2];
$words2[]=$dt[0];
$words2[]=$dt[1];
$words2[]=$dt[2];
$words2[]=$dt[3];
$words2[]=$dt[4];
$words2[]=$dt[5];
}

$i2++;} while ($i2<$i);


$hhh fopen(getenv("DOCUMENT_ROOT")."/words3.dat","w+");
flock($hhh,LOCK_EX);
fwrite($hhh,stripslashes($words3));
flock($hhh,LOCK_UN);
fclose($hhh);

?>
D.iK.iJ вне форума   Ответить с цитированием
Старый 29.12.2012, 21:17   #14
Эксперт
 
Регистрация: 05.03.2008
Сообщений: 1,095
Вес репутации: 249
boric - прекрасное будущееboric - прекрасное будущееboric - прекрасное будущееboric - прекрасное будущееboric - прекрасное будущееboric - прекрасное будущееboric - прекрасное будущееboric - прекрасное будущееboric - прекрасное будущееboric - прекрасное будущееboric - прекрасное будущее
По умолчанию

НЕ надо извращаться с ПХП - он с большими массивами плохо работает (памяти жрет офигенно).

Вот вам код на Питоне. Можете под любым никсом в консоли запустить или в виндах, если питон поставить.

Код:
inp_f = open("input_file.txt", "r")
out_f = open("output_file.txt", "w")

word_dict = {}

for line in inp_f:
    is_duplicate = False
    for word in line[0:-1].split("|"):
        if word_dict.has_key(word):
            is_duplicate = True
        
        if not is_duplicate:
            out_f.write(line)

        word_dict[word] = True

inp_f.close()
out_f.close()
boric вне форума   Ответить с цитированием
Старый 30.12.2012, 02:18   #15
Дикий
 
Аватар для D.iK.iJ
 
Регистрация: 02.06.2007
Адрес: <Noindex>
Сообщений: 2,551
Вес репутации: 355
D.iK.iJ - прекрасное будущееD.iK.iJ - прекрасное будущееD.iK.iJ - прекрасное будущееD.iK.iJ - прекрасное будущееD.iK.iJ - прекрасное будущееD.iK.iJ - прекрасное будущееD.iK.iJ - прекрасное будущееD.iK.iJ - прекрасное будущееD.iK.iJ - прекрасное будущееD.iK.iJ - прекрасное будущееD.iK.iJ - прекрасное будущее
Lightbulb

boric, на чем уж умею. Из меня программист, как из...
В принципе, нужно-то 2 раза запустить эту штуку на ноутбуке. А про память - ini_set("memory_limit", "1000M"), думаю, видно, да.

Боюсь, даже беглое изучение баз данных займет у меня больше времени, чем отработка тормознутого кода на PHP.
Спасибо.

Добавлено через 33 минуты
Пробую array_diff() использовать.

Добавлено через 4 часа 12 минут
Спасибо всем за участие. В итоге, получился такой вот скрипт. На каждую базу ушло минуты две работы. Объем каждой сократился мегабайт на 15.
В принципе, пробовал убирать комментарии // из кода, но размер итогового файла что-то не изменился.

PHP код:
<?
ini_set
("memory_limit""1000M");
@
set_time_limit (3000);

$words=file(getenv("DOCUMENT_ROOT")."/words.dat");
$words=array_unique($words);
sort($words);
$i=count($words);
echo 
"Всего строк: <b>$i</b><br><br>";
$words2="";$words2[]="";
$i2="0";

do{
$dt=explode("|"$words[$i2]);
$i_dt=count($dt);
$dt=str_replace("\r\n","",$dt);

//if ($i_dt=="2"){

$words2[]="$dt[1]|$dt[0]\r\n";

//}elseif ($i_dt=="3"){
//$words2[]="$dt[0]|$dt[2]|$dt[1]\r\n";
//$words2[]="$dt[1]|$dt[2]|$dt[0]\r\n";
//$words2[]="$dt[1]|$dt[0]|$dt[2]\r\n";
//$words2[]="$dt[2]|$dt[1]|$dt[0]\r\n";
//$words2[]="$dt[2]|$dt[0]|$dt[1]\r\n";
//}else{
//$words2[]="$dt[0]|$dt[1]|$dt[3]|$dt[2]\r\n";
//$words2[]="$dt[0]|$dt[2]|$dt[1]|$dt[3]\r\n";
//$words2[]="$dt[0]|$dt[2]|$dt[3]|$dt[1]\r\n";
//$words2[]="$dt[0]|$dt[3]|$dt[1]|$dt[2]\r\n";
//$words2[]="$dt[0]|$dt[3]|$dt[2]|$dt[1]\r\n";
//$words2[]="$dt[1]|$dt[0]|$dt[2]|$dt[3]\r\n";
//$words2[]="$dt[1]|$dt[0]|$dt[3]|$dt[2]\r\n";
//$words2[]="$dt[1]|$dt[2]|$dt[0]|$dt[3]\r\n";
//$words2[]="$dt[1]|$dt[2]|$dt[3]|$dt[0]\r\n";
//$words2[]="$dt[1]|$dt[3]|$dt[0]|$dt[2]\r\n";
//$words2[]="$dt[1]|$dt[3]|$dt[2]|$dt[0]\r\n";
//$words2[]="$dt[2]|$dt[0]|$dt[1]|$dt[3]\r\n";
//$words2[]="$dt[2]|$dt[0]|$dt[3]|$dt[1]\r\n";
//$words2[]="$dt[2]|$dt[1]|$dt[0]|$dt[3]\r\n";
//$words2[]="$dt[2]|$dt[1]|$dt[3]|$dt[0]\r\n";
//$words2[]="$dt[2]|$dt[3]|$dt[0]|$dt[1]\r\n";
//$words2[]="$dt[2]|$dt[3]|$dt[1]|$dt[0]\r\n";
//$words2[]="$dt[3]|$dt[0]|$dt[1]|$dt[2]\r\n";
//$words2[]="$dt[3]|$dt[0]|$dt[2]|$dt[1]\r\n";
//$words2[]="$dt[3]|$dt[1]|$dt[0]|$dt[2]\r\n";
//$words2[]="$dt[3]|$dt[1]|$dt[2]|$dt[0]\r\n";
//$words2[]="$dt[3]|$dt[2]|$dt[0]|$dt[1]\r\n";
//$words2[]="$dt[3]|$dt[2]|$dt[1]|$dt[0]\r\n";
//}

$i2++;} while ($i2<$i);

$result=array_diff($words$words2);
$result=implode(""$result);

$hhh fopen(getenv("DOCUMENT_ROOT")."/words3.dat","w+");
flock($hhh,LOCK_EX);
if(
fwrite($hhh,stripslashes($result))) {print "<br><font color='green'>Файл сохранен.</font>";} else {print "<font color='red'>Ошибка!  - не могу сохранить.</font>";}
flock($hhh,LOCK_UN);
fclose($hhh);
?>

Последний раз редактировалось D.iK.iJ; 30.12.2012 в 02:18. Причина: Добавлено сообщение
D.iK.iJ вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Печать текстовой области web-страницы fsb-sasha Курилка 5 27.11.2011 17:37
Повторы Апокалипсис Пожелания пользователей системы 3 25.07.2010 04:39
Объем текстовой информации в новости на DLE Elektra Разработка и сопровождение сайтов 2 28.02.2010 17:06
Повторы слов в ссылках реабилитировали? llenivo Ошибки при работе с системой 12 21.03.2009 00:30
Предупреждения На Повторы Слов MS555 Пожелания пользователей системы 16 29.10.2008 13:38


Часовой пояс GMT +3, время: 09:24.