Генерация всех возможных комбинаций с использованием набора строк

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

The length of the output string isn't defined (the maximum length is the number of the given strings,since you can only use them once) For example, the stringset array('A','B') would generate A,B,AB,BA. For example, the stringset array('ABC', 'Z') would generate 'ABC','Z', 'ZABC' and 'ABCZ'. A stringset can have identical entries, and the output does't need te be unique.For example, the stringset array('A', 'A') would generate 'A', 'A','AA','AA'; (I don't actually need duplicates, but I don't want the make things more difficult)

Я знаю, что 2 строки имеют 4 комбинации (2 = & gt; 4) и 3 = & gt; 15, 4 = & gt; 64, 5 = & gt; 325 ...

Так как я не программист, я нашел это по меньшей мере «сложным». Вложенные циклы, где скоро слишком сложно. Более простым решением может быть нахождение шаблона в индексах массива со строками. Но это дает мне двойное использование строк ...

  $strings = array('T','O','RS');
  $num = 0;
  $stringcount = count($strings);
  $variations = array(0,1,4,15,64,325,1956,13699,109600,986409);

  for($i=0;$i<$variations[$stringcount];$i++){
    $index = base_convert($num, 10, $stringcount);
    $array_of_indexes = str_split($index);
    $out='';
    for($j=0;$j<count($array_of_indexes);$j++){
     $out .= $strings[$array_of_indexes[$j]];
    }
    echo $out . '<br />';
    $num++;
  }

Результат: T О RS Ветхий Завет OO ORS RST RSO РВКР OTT OTO OTRS OOT ООО OORS

Не хорошо, много дубликатов + много допустимых комбинаций не включены

Я знаю, что это решение во многом неверно, но я не знаю, с чего начать? Какие-либо предложения? Спасибо заранее!

Ответы на вопрос(4)

Ваш ответ на вопрос