Создать неповторяющуюся перестановку фиксированной длины большего набора

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

У меня есть следующий набор символов:

а б в д е ф г ч

Я хочу получить все возможные перестановки или комбинации (без повторения),но на ограниченном (переменном) наборе символовЭто означает, что если я введу символы и число2, результаты должны выглядеть

ab ba ac ca ad da ae ea af fa ag ga ah ha
bc cb bd db be eb bf fb bg gb bh hb
cd dc ce ec cf fc cg gc ch hc
de ed df fd dg gd dh hd
ef fe eg ge eh he
fg gf fh hf
gh hg

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

public function getPermutations($letters) {
    if (strlen($letters) < 2) {
        return array($letters);
    }

    $permutations = array();
    $tail = substr($letters, 1);

    foreach ($this->getPermutations($tail) as $permutation) {
        $length = strlen($permutation);

        for ($i = 0; $i 

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

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