УРРРРРРРРРРРРА Я ОПЛАЧИВАЕМЫЙ ПРОГРАММИСТ ИЛИ СКАЗ О ТОМ КАК СДЕЛАТЬ ПРОГРАММУ НА ПХП ДЛЯ ПЕРЕБОРА ВСЕХ ВАРИАНТОВ/КОМБИНАЦИЙ СЛОВ В ПРЕДЛОЖЕНИИ…

ЗДАРРРРРРРРРРРРРРРРРРРРРРРРРРРОВА;)
ВЫЛОВИЛ В ИНТЕРНЕТЕ:)))))))))
В ОБЩЕМ Я УЖЕ НЕКОТОРОЕ ВРЕМЯ ИЗУЧАЮ ВЕБПРОГРАММИРОВАНИЕ ТО БИШЬ ПХП МУСКУЛ КОЕ ЧТО НА ДЖАВАСКРИПТАХ И Т.Д.
В ДОПОЛНЕНИИ К БЕЙСИКУ В ШКОЛЕ И ПАСКАЛЮ В УНИВЕРСИТЕТЕ:)))
ТАК ЧЕГО ТО ИЗУЧАЛ ИЗУЧАЛ ДЛЯ СЕБЯ ЧТОТО ПОПИСЫВАЛ:)))
И ТУТ МНЕ ЧЕГО ТОП АРУ ЧЕЛОВЕК ОТПИСАЛО ТИПА ИМ НУЖНЫ БЫЛИ ПРОГРАММЫ:)ОДИН РЕШИЛ С ФОРУМОМ ПХПББ САМ С НАСТРОЙКОЙ:)
А ВОТ ДРУГОЕ ЗАДАНИЕ НА КОТОРОМ Я НАДОЛГО ЗАЛИП:)))

Т.з. для обработки ключей.
Есть исходное предложение:
«музыка на телефон новинки бесплатно скачать»

Надо составить варианты:
«музыка на телефон»
«музыка новинки»
«музыка бесплатно»
«музыка скачать»
«на телефон новинки»
«на телефон бесплатно»
«на телефон скачать»
«новинки бесплатно музыка»
«новинки скачать на телефон»
«бесплатно скачать на телефон»
и т.д.

Алгоритм:
предложение разбиваем на слова. Слова с предлогами считаем одним словом (на, для, с, за, под, в, к), т.е. в примере «на телефон» это одно слово. Список предлогов для обработки должен быть редактируемым.
так, знаки препинания, спец символы удалять.

Считаем количество слов в предложении. В примере КОЛ_СЛОВ=5.

Генерируем перестановки всех слов во всех возможных вариациях количеством слов от 2 до КОЛ_СЛОВ минус 1 (т.е. в нашем примере это 4)

На вход программы подается список предложений количеством 5-10 тыс. штук.
Предложения могут быть двусловными, тогда они исключаются из обработки.
Надо все эти предложения прогнать по вышеприведенному алгоритму, удалить получившиеся дубли.
На выходе сгенерированные варианты.

Я СОГЛАСИЛСЯ ПОДУМАЛ ЧТО ЗАДАНИЕ ФИГНЯ И Я БЫСТРО ОСИЛЮ:)
НО ОКАЗАЛОСЬ ЧТО ЗАДАНИЕ СЛОЖНОЕ И СВЯЗАННОЕ С МАТЕМАТИКОЙ КОНКРЕТНО А ЕСЛИ БЫТЬ ТОЧНЕЕ ТО С МАТЕМАТИЧЕСКОЙ ЛОГИКОЙ И КОМБИНАТОРИКОЙ:)
ПАРУ ДНЕЙ Я ДУМАЛ ДУМАЛ ТЫКАЛ ТЫКАЛ В КЛАВИАТУРУ ВЯЛО…И ВОТ РЕШИЛ НАКОНЕЦ СДЕЛАТЬ ЗАДАЧУ НУ ТИПА Я ТВАРЬ ДРОЖАЩАЯ ИЛИ…ТЕМ БОЛЕЕ ЧТО УСТАНОВКА ДЖУМЛЫ С ИНТЕРНЕТМАГАЗИНОМ ВИРТУЕМАРТ НЕ ПОШЛА:)))
В ОБЩЕМ ПОТРАТИЛ ЧАСОВ 20 НА ЭТО…ПРИМЕРНО СТОЛЬКО ЖЕ ЗА СКОЛЬКО Я КРИЗИС 2 ПРОХОДИЛ:)))
ЛОПАТИЛ САЙТЫ НО НИЧЕГО НЕ НАХОДИЛ…ПРОСТАЯ ЗАДАЧА ПЕРЕСТАВИТЬ СЛОВА В ПРЕДЛОЖЕНИИ ВО ВСЕХ ВАРИАНТАХ И УБРАТЬ ДУБЛИКАТЫ НА ПХП РЕАЛИЗОВЫВАЛАСЬ СО СКРИПОМ ДА ЕЩЕ КАКИМ:)СКРИП БЫЛ ПОЧИЩЕ ПАРКЕТА:)))
СНАЧАЛА Я ПОДУМАЛ ЧТО НАДЕЛАЮ ЦИКЛОВ ШТУК 10 ПОД МАКСИМУМ 10 СЛОВ В ПРЕДЛОЖЕНИИ НО ЧЕГО ТО НЕ ПОПЕРЛО ПОТОМ ЕЩЕ ЭКСПЕРИМЕНТИРОВАЛ ОБОШЕЛ ПОД 5 ДЕСЯТКОВ САЙТОВ НО…

ВОТ КСТАТИ ХОРОШИЕ САЙТЫ ПО ЭТОЙ ТЕМЕ ПОПАЛИСЬ…
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=68455
http://myrusakov.ru/sozdanie-perebor-massivov-php.html
http://www.php.ru/forum/viewtopic.php?t=15502
http://www.sql.ru/forum/actualthread.aspx?tid=932528
http://algolist.manual.ru/maths/combinat/index.php
http://forum.ru-board.com/topic.cgi?forum=31&topic=16348
http://oooportal.ru/?cat=article&id=684
http://oooportal.ru/?cat=article&id=685

ОСТАНОВИЛСЯ НА ТАКОМ СКРИПТЕ

error_reporting(E_ALL);

function genPermanent ($length) {
// Возвращает массив строк длины $length - всех вероятных комбинаций следующих символов
//$symbols = str_split('ABC');
$symbols=array('Adam', 'Bret', 'Ceff', 'Dave');
$array = $symbols;
while (--$length) {
$newArr = array ();
foreach ($array as $a) {
foreach ($symbols as $s) {
$newArr[] = $a.$s;
}
}
$array = $newArr;
}
return $array;
}

function genAlternating ($length) {
// Возвращает массив строк длины от 1 до $length - всех вероятных комбинаций следующих символов
//$symbols = str_split('ABC');
$symbols=array('Adam', 'Bret', 'Ceff', 'Dave');
$last = $symbols;
$result = $symbols;
while (--$length) {
$newArr = array ();
foreach ($last as $a) {
foreach ($symbols as $s) {
$newArr[] = $a.$s;
}
}
$last = $newArr;
$result = array_merge($result, $last);
}
return $result;
}

//print_r(genPermanent(3));
echo "\n===========\n";
print_r(genAlternating(4));

А ПОД ТО КОНКРЕТНОЕ ЗАДАНИЕ ЧТО УКАЗАЛ ВНАЧАЛЕ ПРОГРАММКУ НАПИСАЛ ТАКУЮ:)

//error_reporting(E_ALL);

// Возвращает массив строк длины от 1 до $length - всех вероятных комбинаций следующих символов
//ОТКРЫВАЕМ ФАЙЛЫ ОДИН ДЛЯ ЧТЕНИЯ ДРУГИЕ ДЛЯ ЗАПИСИ
$fp3 = fopen("rezultat9.txt", "a"); // Открываем файл в режиме записи
//$fp2 = fopen("rezultat3.txt", "a"); // Открываем файл в режиме записи

//ЧИТАЕМ ФАЙЛ ПОСТРОЧНО ЗАКИДЫВАЕМ В МАССИВ
$fp = fopen("new2.txt", "r");

while (!feof($fp))
{
$mytext = fgets($fp, 999);
echo $mytext."
";
$array2 = explode(" ", $mytext);
echo "array2 1
";
print_r ($array2);
$cop=count($array2);
//$length=$cop-1;

//МАССИВ ПРЕДЛОГОВ
$predlog=array("и","на", "для", "с", "за", "под", "в", "к","по");
$copred=count($predlog);

//ПРОВЕРКА ЕСТЬ ЛИ В ЗНАЧЕНИИ МАССИВА ПРЕДЛОГИ
//ЕСЛИ ЕСТЬ ПРИЛЕПЛЯЕМ ЗНАЧЕНИЕ ПРЕДЛОГА К ПОСЛЕДУЮЩЕМУ ЭЛЕМЕНТУ
//А САМ ЭЛЕМЕНТ С ПРЕДЛОГОМ УДАЛЯЕМ АНСЕТОМ

for($prov=0;$prov<$cop;$prov++) { for($prov2=0;$prov2<$copred;$prov2++) { if ($array2[$prov] == $predlog[$prov2]) { $array2[$prov+1]=$array2[$prov]." ".$array2[$prov+1]; unset($array2[$prov]); $prov=$prov+1; } } } //СОРТИРУЕМ АРРЕЙ2 ПОСЛЕ ВОЗМОЖНЫХ УДАЛЕНИЙ ЭЛЕМЕНТОВ sort($array2); //КОЛИЧЕСТВО ЭЛЕМЕНТОВ В АРРЕЙ2 ПОСЛЕ СОРТИРОВКИ $cop=count($array2); sleep(1); echo "array2
";
print_r ($array2);

//ПРОВЕРЯЕМ ЧТО У НАС НАХОДИТСЯ В ЯЧЕЙКАХ АРРЕЙ2
foreach ($array2 as $abc)
{
$mytext3 = "$abc\r\n"; // Исходная строка
echo "mytext3=".$mytext3."
";
$test2 = fwrite($fp3, $mytext3); // Запись в файл
if ($test2) echo 'Данные в файл успешно занесены 222.';
else echo 'Ошибка при записи в файл.';
}

//ТУТ САМЫЙ ШИК:)СОЗДАЕМ ПЕРЕБОР ВСЕХ ЭЛЕМЕНТОВ МАССИВА АРРЕЙ2
//ЛЕНГФ КОЛИЧЕСТВО ЭЛЕМЕНТОВ В ПЕРЕСТАНОВКЕ МАКСИМАЛЬНОЕ
//РАВНО КОЛИЧЕСТВУ СЛОВ В СТРОКЕ-1
$length=$cop-1;
$symbols=$array2;
$last = $symbols;
//$result = $symbols;
$result = array();
//ТУТ ПРИЛЕПЛЯЕТСЯ К КАЖДОМУ ЭЛЕМЕНТУ СПИСОК ЭЛЕМЕНТОВ
while (--$length)
{
$newArr = array ();
foreach ($last as $a)
{
foreach ($symbols as $s)
{
//echo "a=".$a." s=".$s."
";

//КОЛИЧЕСТВО ПОПАДАНИЙ ОДНОГО ЭЛЕМЕНТА В СПИСОК СДРУГИМИ ЭЛЕМЕНТАМИ
//ЕСЛИ В СТРОКЕ ЕСТЬ НЕСКОЛЬКО ОДИНАКОВЫХ ЭЛЕМЕНТОВ ТО КОНТИНУЕ
$ddd=substr_count($a,$s);
if ($ddd>0)
{continue;
}
else {
//ЕСЛИ ПОВТОРЕНИЙ ЭЛЕМЕНТОВ НЕТ ТО КОНТАКТЕНАЦИЯ+ ПРОБЕЛЫ ЧТОБЫ НЕ СЛИПАЛОСЬ ПОТОМ
$newArr[] = $a." ".$s." ";
}
}
}
$last = $newArr;
//ТУТ ПРИЛЕПЛЯЕМ К СТАРОМУ МАССИВУ НОВЫЕ ЭЛЕМЕНТЫ НАЧАЛЬНОГО МАССИВА
$result = array_merge($result, $last);
}

//ТУТ ЗАПИСЫВАЕМ ЭЛЕМЕНТЫ МАССИВА РЕЗАЛТ В СТРОКИ
echo "result
";
print_r ($result);
foreach ($result as $bacd) {
//$fp2 = fopen("rezultat3.txt", "a"); // Открываем файл в режиме записи
//УБИРАЕМ СИМВОЛЫ ПЕРЕНОСА СТРОКИ КОТОРЫЕ ВСПЛЫВАЮТ МЕЖДУ СТРОК ИНОГДА
$mdga=str_replace("\r\n", "", $bacd);
$mytext2 = "$mdga\r\n"; // Исходная строка
echo "mytext=".$mytext2."
";
file_put_contents("rezultat3.txt", $mytext2, FILE_APPEND);
//$test = fwrite($fp2, $mytext2); // Запись в файл
//if ($test) echo 'Данные в файл успешно занесены.';
//else echo 'Ошибка при записи в файл.';
//fclose($fp2); //Закрытие файла
}
sleep(1);
}

fclose($fp);
//fclose($fp2); //Закрытие файла
fclose($fp3); //Закрытие файла

КОНЕЧНО НАЛЯПАНО КРУТО НО ГЛАВНОЕ РАБОТАЕТ:)))И ИСПРАВЛЯТЬ ВСЕ ПРОСТО ВСЕ ПЕРЕД ГЛАЗАМИ:)НЕ ОЧЕНЬ ЛЮБЛЮ ПРОГРАММИСТОВ БЕЗ КОММЕНТАРИЕВ ПИШУЩИХ И ГДЕ ВСЕ ЗАЛИЗАНО ЧТО ХРЕН ПОЙМЕШЬ О ЧЕМ ТАМ:)))
ТАК ЧТО ЭТО ВСЕ ИНТЕРЕСНО НО ПОРА УЖЕ СПАТЬ:)))))))))ПОЗВАТЕЛЬНО С ФАНТАЗИЕЙ ХОТЯ И ЗАНИМАЕТ МНОГО ВРЕМЕНИ НО НАДЕЮСЬ ДАЛЬШЕ БУДЕТ ЛУЧШЕ ПРОЩЕ И ЕЩЕ ИНТЕРЕСНЕЕ И ЗАГАДОЧНЕЕ:)))
ВООБЩЕ ПРОГРАММИРОВАНИЕ НРАВИТЬСЯ ТЕМ ЧТО МОЖНО АВТОМАТИЗИРОВАТЬ МНОГИЕ УНЫЛЫЕ РАБОТЫ И СКРИПТЫ ПОДВОДЯТ РЕЖЕ ЛЮДЕЙ:))))))))))А ЛЮДИ МОНАЮТСЯ ТУДА СЮДА ЧЕГО ТО ИЩУТ ПРИЧЕМ КАК ПРАВИЛО РАССТАВАНИЕ ПРОИСХОДЯТ В НЕПОДХОДЯЩЕЕ ВРЕМЯ:)))
ПОЖЕЛАЮ СЕБЕ И ЧИТАТЕЛЯМ ДАЛЬНЕЙШЕГО БЕЗГРАНИЧНОГО СОВЕРШЕНСТВА МУДРОСТИ ПОНИМАНИЯ УДИВИТЕЛЬНЫХ ВЕЩЕЙ:)
;)

ИНТЕРЕСНЫЕ СТАТЬИ САЙТА EZOLIFE.INFO