За последние 24 часа нас посетили 23636 программистов и 1543 робота. Сейчас ищут 1005 программистов ...

формирование строки из массива символов

Тема в разделе "Прочие вопросы по PHP", создана пользователем WildZero, 30 ноя 2010.

  1. WildZero

    WildZero Активный пользователь

    С нами с:
    24 фев 2010
    Сообщения:
    242
    Симпатии:
    0
    Адрес:
    Пермь
    Возникла у меня тут чисто теоретическая задачка.
    Собрать массив и все возможных сочетаний символов из массива, определенной длины.
    Ступор.
    С постоянной длиной строки всё ясно. А вот с переменной проблема.
    Чувствую, что требуется использовать рекурсию, натолкните на путь истинный, пожалуйста.
     
  2. Volt(220)

    Volt(220) Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    1.640
    Симпатии:
    1
    В первом приближении:
    PHP:
    1. <?php
    2. $len=3;
    3. $arr=range(0,9);
    4. function makeArr(&$rezArr, $deep){
    5.     global $arr, $len;
    6.     if ($deep===1){
    7.         $rezArr=$arr;
    8.         makeArr($rezArr, 2);
    9.         return;
    10.     }
    11.     if ($deep>$len) return;
    12.     $newArr=array();
    13.     foreach($arr as $symbol){
    14.         foreach($rezArr as $str){
    15.             $strLen=strlen($str);
    16.             for($i=0;$i<$strLen;$i++){
    17.                 $el=substr($str,0,$i).$symbol.substr($str,$i);
    18.                 if(!in_array($el,$newArr)){
    19.                     $newArr[]=$el;
    20.                 }
    21.             }
    22.         }
    23.     }
    24.     $rezArr=$newArr;
    25.     if($deep<$len) makeArr($rezArr, $deep+1);
    26. }
    27.  
    28. makeArr($a,1);
    29. print_r($a);