За последние 24 часа нас посетили 16818 программистов и 1295 роботов. Сейчас ищут 1572 программиста ...

,и объединенить Перебрать все элементы массивадруг с другом

Тема в разделе "Вопросы от блондинок", создана пользователем mrelk, 13 янв 2015.

  1. mrelk

    mrelk Новичок

    С нами с:
    13 янв 2015
    Сообщения:
    2
    Симпатии:
    0
    Доброго времени суток!

    Встала такая задача:

    Есть Массив типа такого:
    Array(
    0 => 0
    1 => 1
    2 => 2
    3 => 3
    )

    Количество элементов в массиве произвольное

    Как путем нехитрых махинаций сделать из него массива типа
    Array(
    0 => 0
    1 => 1
    2 => 2
    3 => 3
    4 => 0123
    5 => 012
    6 => 01
    7 => 123
    8 => 12
    9 => 23
    )

    т.е. все перебрать все сочетания элементов и дописать в массив

    Уже два дня бьюсь с решением, если не сложно подтолкните хоть в нужную сторону
     
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
  3. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.770
    Адрес:
    :сердА
    Re: ,и объединенить Перебрать все элементы массивадруг с дру

    Решение в студию. А мы глянем, что с ним не так.

    Первая подсказка - число сочетаний равно факториалу количества элементов.
     
  4. mrelk

    mrelk Новичок

    С нами с:
    13 янв 2015
    Сообщения:
    2
    Симпатии:
    0
    Re: ,и объединенить Перебрать все элементы массивадруг с дру

    Вроде решил

    Код (Text):
    1. $arr = Array('0','1','2','3');
    2.  
    3. function pc_array_power_set($array) {
    4.     $results = array(array( ));
    5.     foreach ($array as $element)
    6.         foreach ($results as $combination)
    7.             array_push($results, array_merge(array($element), $combination));
    8.     return $results;   
    9. }
    10.  
    11. function reverseAndMergeArr($array){
    12.     $i = 0;
    13.     foreach ($array as $k => $v){
    14.         $array[$i] = implode(array_reverse($v));
    15.         $i++;
    16.     }
    17.     return $array;
    18. }
    19.  
    20. $arr = pc_array_power_set($arr);
    21. $arr = reverseAndMergeArr($arr);
    22.  
    23. echo '<pre>';
    24. print_r($arr);
    25. echo '</pre>';