Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Все возможные комбинации массивов [2]

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (3): « 1 [2] 3 »   

> Без описания
tuareg
Отправлено: 17 Августа, 2012 - 11:41:05
Post Id


Участник


Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010  


Помог: 69 раз(а)




Если я правильно думаю, то решение было вот тут http://forum.php.su/topic.php?fo...pic=6137&p=2
 
 Top
armancho7777777 Супермодератор
Отправлено: 17 Августа, 2012 - 11:51:16
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




Там тоже не то ))
Там тоже выдаются не все комбинации ))
 
 Top
tuareg
Отправлено: 17 Августа, 2012 - 11:58:17
Post Id


Участник


Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010  


Помог: 69 раз(а)




armancho7777777 пишет:
Там тоже выдаются не все комбинации ))

Пример "в студию", исходные данные, что надо получить

(Отредактировано автором: 17 Августа, 2012 - 11:59:52)

 
 Top
armancho7777777 Супермодератор
Отправлено: 17 Августа, 2012 - 12:14:40
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




tuareg пишет:
что надо получить

Ответ в названии темы вообще-то))
 
 Top
tuareg
Отправлено: 17 Августа, 2012 - 12:21:27
Post Id


Участник


Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010  


Помог: 69 раз(а)




armancho7777777 пишет:
Ответ в названии темы вообще-то))

А вот если попробовать запустить мой вариант с массивом, из первого поста получим то что надо ТС Улыбка
Вот я и спрашивал какие еще комбинации надо
 
 Top
armancho7777777 Супермодератор
Отправлено: 17 Августа, 2012 - 12:29:35
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




tuareg пишет:
А вот если попробовать запустить мой вариант с массивом, из первого поста получим то что надо ТС

Да нет.
(Добавление)
Ваш вариант:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2.     [0] => ассортимент вай концерн
  3.     [1] => ассортимент вай 23
  4.     [2] => ассортимент вайe концерн
  5.     [3] => ассортимент вайe 23
  6.     [4] => ассортимент dfdf концерн
  7.     [5] => ассортимент dfdf 23
  8.  


А все возможные комбинации это как минимум:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2.     [0] => ассортимент вай концерн
  3.     [1] => ассортимент вай 23
  4.     [2] => ассортимент вайe концерн
  5.     [3] => ассортимент вайe 23
  6.     [4] => ассортимент dfdf концерн
  7.     [5] => ассортимент dfdf 23
  8.     [6] => ассортимент концерн вай
  9.     [7] => ассортимент 23 вай
  10.     [8] => ассортимент концерн вайe
  11.     [9] => ассортимент 23 вайe
  12.     [10] => ассортимент концерн dfdf
  13.     [11] => ассортимент 23 dfdf
  14.  
 
 Top
tuareg
Отправлено: 17 Августа, 2012 - 12:34:03
Post Id


Участник


Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010  


Помог: 69 раз(а)




Так-то я проверил если что Хм
Вот файл, там только массив немного другой в плане
PHP:
скопировать код в буфер обмена
  1.  
  2. $arr= array(
  3.                 0=>array(1,2,3),
  4.                 1=>array(4),
  5.                 2=>array(5,6)
  6. );
  7.  

Скачать файл: fff.php
Скачан раз: 46
 
 Top
EuGen Администратор
Отправлено: 17 Августа, 2012 - 12:34:41
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Насколько я понимаю, то, что приведено в первом сообщении темы, есть декартово произведение кортежей произвольной длины:
PHP:
скопировать код в буфер обмена
  1. function decartProductPair($rgArg0, $rgArg1)
  2. {
  3.    $rgResult=array();
  4.    for($i=0; $i<count($rgArg0); $i++)
  5.    {
  6.       for($j=0; $j<count($rgArg1); $j++)
  7.       {
  8.          $rgResult[]=array_merge((array)$rgArg0[$i], (array)$rgArg1[$j]);
  9.       }
  10.    }
  11.    return $rgResult;
  12. }
  13. function decartProduct()
  14. {
  15.    $rgArgs   = func_get_args();
  16.    if(!count($rgArgs))
  17.    {
  18.       return array();
  19.    }
  20.    $rgResult = array_shift($rgArgs);
  21.    while($rgArg=array_shift($rgArgs))
  22.    {
  23.       $rgResult=decartProductPair($rgResult, $rgArg);
  24.    }
  25.    return $rgResult;
  26. }
  27. $rgArg0=array(1, 2, 3);
  28. $rgArg1=array(4);
  29. $rgArg2=array(5, 6);
  30.  
  31. $rgResult=decartProduct($rgArg0, $rgArg1, $rgArg2);
  32. //var_dump($rgResult);

?


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
armancho7777777 Супермодератор
Отправлено: 17 Августа, 2012 - 12:35:08
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




Stierus пишет:
1-4-5 не то же самое, что 4-1-5

Более того, 1-4-5 не то же самое, что 5-4-1
(Добавление)
PHP:
скопировать код в буфер обмена
  1.  
  2. function array_all_combinations($items, $perms = array(), &$result = array())
  3. {
  4.     if (empty($items))
  5.         {
  6.         $result[] = join(' ', $perms);
  7.     }
  8.         else
  9.         {
  10.         for ($i = count($items) - 1; $i >= 0; --$i)
  11.                 {
  12.              $newitems = $items;
  13.              $newperms = $perms;
  14.              list($foo) = array_splice($newitems, $i, 1);
  15.              array_unshift($newperms, $foo);
  16.              array_all_combinations($newitems, $newperms, $result);
  17.          }
  18.     }
  19.        
  20.         return $result;
  21. }
  22.  
  23.  
  24.  
  25. $rgArg0 = array(1, 2, 3);
  26. $rgArg1 = array(4);
  27. $rgArg2 = array(5, 6);
  28.  
  29. $arr =  array_merge($rgArg0, $rgArg1, $rgArg2);
  30.  
  31. $result = array_all_combinations($arr);
  32.  
  33. echo '<pre>'.print_r($result, 1).'</pre>';
  34.  

(Отредактировано автором: 17 Августа, 2012 - 12:50:49)

 
 Top
tuareg
Отправлено: 17 Августа, 2012 - 12:46:32
Post Id


Участник


Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010  


Помог: 69 раз(а)




И что это было? Не понял
Результат
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. (
  3.     [0] => Array
  4.         (
  5.             [0] => 6
  6.             [1] => 1
  7.             [2] => 2
  8.             [3] => 3
  9.             [4] => 4
  10.             [5] => 5
  11.         )
  12.  
  13.     [1] => Array
  14.         (
  15.             [0] => 5
  16.             [1] => 6
  17.             [2] => 1
  18.             [3] => 2
  19.             [4] => 3
  20.             [5] => 4
  21.         )
  22.  
  23.     [2] => Array
  24.         (
  25.             [0] => 4
  26.             [1] => 5
  27.             [2] => 6
  28.             [3] => 1
  29.             [4] => 2
  30.             [5] => 3
  31.         )
  32.  
  33.     [3] => Array
  34.         (
  35.             [0] => 3
  36.             [1] => 4
  37.             [2] => 5
  38.             [3] => 6
  39.             [4] => 1
  40.             [5] => 2
  41.         )
  42.  
  43.     [4] => Array
  44.         (
  45.             [0] => 2
  46.             [1] => 3
  47.             [2] => 4
  48.             [3] => 5
  49.             [4] => 6
  50.             [5] => 1
  51.         )
  52.  
  53.     [5] => Array
  54.         (
  55.             [0] => 1
  56.             [1] => 2
  57.             [2] => 3
  58.             [3] => 4
  59.             [4] => 5
  60.             [5] => 6
  61.         )
  62.  
  63.     [6] => Array
  64.         (
  65.             [0] => 6
  66.             [1] => 1
  67.             [2] => 2
  68.             [3] => 3
  69.             [4] => 4
  70.             [5] => 5
  71.         )
  72.  ....
  73. [719] => Array
  74.         (
  75.             [0] => 1
  76.             [1] => 2
  77.             [2] => 3
  78.             [3] => 4
  79.             [4] => 5
  80.             [5] => 6
  81.         )
  82.  

Этим Вы что хотели показать?
P.S Может у меня правда версия PHP старая 5.2.... Но ошибок нет Радость
 
 Top
armancho7777777 Супермодератор
Отправлено: 17 Августа, 2012 - 12:49:27
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




tuareg пишет:
И что это было?

Подправил ))
 
 Top
tuareg
Отправлено: 17 Августа, 2012 - 12:51:31
Post Id


Участник


Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010  


Помог: 69 раз(а)




Не совсем забыли ф-ю pc_permute
 
 Top
armancho7777777 Супермодератор
Отправлено: 17 Августа, 2012 - 12:52:26
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




Всё, точно подправил уже ))
Можете проверить:

719 уникальных комбинаций Радость

(Отредактировано автором: 17 Августа, 2012 - 12:53:48)

 
 Top
EuGen Администратор
Отправлено: 17 Августа, 2012 - 12:55:19
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




armancho7777777 пишет:
719 уникальных комбинаций

Только не очень понятно, каким образом они соотносятся с тем, что было запрошено в первом сообщении темы.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
armancho7777777 Супермодератор
Отправлено: 17 Августа, 2012 - 12:55:46
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




Я тут разбираюсь просто с тем, что бы функция возвращала по максимальному количеству элементов из списка массивов.

(Отредактировано автором: 17 Августа, 2012 - 12:59:12)

 
 Top
Страниц (3): « 1 [2] 3 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB