Чем бы сцепить кучу слов?

12
N3
На сайте с 28.04.2014
Offline
98
1405

Есть список слов: abc 123 qwe - любое количество. Нужно чтобы из этого получилось нечто типа:

abc 123 qwe

abc qwe 123

123 abc qwe

123 qwe abc

то есть получился список всех возможных вариантов этих слов в разном порядке. Как бы?

Неискоренимо нежелание пользоваться поисковыми системами - даже находясь на форуме о поисковых системах © Cell Влазить напрямую в базу — это невозможно © Игорь Белов, mchost.ru Если SeoPult купил ссылку - значит она "рабочая" © Nat_SeoPult
zzzzz
На сайте с 12.12.2006
Offline
204
#1
/////
Mad_Man
На сайте с 10.11.2008
Offline
162
#2

Гуглить "array permutation". После этого на досуге почитать комбинаторику.

N3
На сайте с 28.04.2014
Offline
98
#3

zzzzz, спасибо, хоть и для сапы, но в закладки добавил :)

Mad_Man:
Гуглить "array permutation". После этого на досуге почитать комбинаторику.

Я слишком ленив и туп чтобы это делать в то время когда есть готовые решения. Нашел вот такое https://support.google.com/adwords/editor/answer/106939?hl=ru из минусов - только три столбика и не перемешивает слова между столбцами. Плак плак. В общем не шибко удобно.

Актуально.

Z
На сайте с 17.09.2010
Offline
34
#4


function change(&$a, &$b){
$c = $a;
$a = $b;
$b = $c;
}

function permutation($k){
global $n, $x;

if($k == $n){
for($i=0; $i<=$n; $i++) echo $x[$i], ' ';
echo '<br>';
} else {
for($j=$k+1; $j<=$n; $j++){
change($x[$k+1], $x[$j]);
permutation($k+1);
change($x[$k+1], $x[$j]);
}
}
}


$str = 'abc 123 qwe';

$x = explode(' ', $str);
$n = count($x)-1;

permutation(-1);
N3
На сайте с 28.04.2014
Offline
98
#5

http://www.wapbbs.com/bbs/archive/index.php/t-141270

вот тут нашел код, немного для меня кривенький, но берет примеры из файликов и генерит тыщу вариантов как и надо было :)

M
На сайте с 20.01.2009
Offline
221
#6

Эпично выглядят сервисы и php коды, учитывая то что давно была придумана программка Microsoft Excel

Мониторинг, анализ и проверка позиций сайта в поисковых системах (http://allpositions.ru/redirect/820)
N3
На сайте с 28.04.2014
Offline
98
#7
Morfin:
Эпично выглядят сервисы и php коды, учитывая то что давно была придумана программка Microsoft Excel

Если подскажешь как правильно и главное гибко сцепить фразы чтобы получились все возможные комбинации, то буду благодарен. Я лично вижу исключительно ужасные варианты реализации.

Mad_Man
На сайте с 10.11.2008
Offline
162
#8

Мне таки понравился вариант из http://www.divideandconquer.se/2009/06/04/permute-an-array-in-php/

$array = array('AAA', 'BBB', 'CCC');

$result = permute($array);

function permute($array)
{
$results = array();

if (count($array) == 1)
{
$results[] = $array;
}
else
{
for ($i = 0; $i < count($array); $i++)
{
$first = array_shift($array);
$subresults = permute($array);

array_push($array, $first);

foreach ($subresults as $subresult)
{
$results[] = array_merge(array($first), $subresult);
}
}
}

return $results;
}

Строковый эквивалент на основе массивов:


$string = 'AAA BBB CCC';

$result = permute_str($string);


function permute_str($string)
{
$array = permute(explode(' ', $string));


$result = null;

foreach ($array as $item)
{
$result[] = implode(' ', $item);
}

return $result;
}


Array
(
[0] => AAA BBB CCC
[1] => AAA CCC BBB
[2] => BBB CCC AAA
[3] => BBB AAA CCC
[4] => CCC AAA BBB
[5] => CCC BBB AAA
)
N3
На сайте с 28.04.2014
Offline
98
#9
Mad_Man:
Мне таки понравился вариан

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

iqmaker
На сайте с 17.04.2012
Offline
342
#10

Хех уже спрашивали вроде, я написал на python для любого количества столбцов и строк.

---------- Добавлено 15.08.2014 в 03:06 ----------

/ru/forum/comment/13006473

---------- Добавлено 15.08.2014 в 03:09 ----------

Ну и вот еще типа online сервис: http://seogenerator.ru/tools/

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий