@aopil

Как исправить повтор комбинаций?

Как избавиться от повторяющихся комбинаций?

Код выполняет преобразование строки в все возможные комбинации верхнего/нижнего регистра.
public function calculatePermutations($text) {

        $permutations = array();
        $chars = str_split($text);

        // Count the number of possible permutations and loop over each group 
        for ($i = 1; $i < strlen($text) ** 2; $i++) {

            // Loop over each letter [a,b,c] for each group and switch its case
            for ($j = 0; $j < strlen($text); $j++) {

                // isBitSet checks to see if this letter in this group has been checked before
                // read more about it here: http://php.net/manual/en/language.operators.bitwise.php
                $permutations[$i][] = ($this->isBitSet($i, $j)) 
                    ? strtoupper($chars[$j]) 
                    : $chars[$j];
            }
            
        }

        foreach ($permutations as $value) {

            $array[] = implode("", $value);
        }
        var_dump($array);
    }

    public function isBitSet($n, $offset) {
      return ($n >> $offset & 1) != 0;
    }


Пример выполнения:
5fa424d7917bc714772003.png
На фото видно, что 3 повторяющихся комбинации.

Проблема в том, что если в запросе существуют цифры, то из-за этого и получаются повторные комбинации.
  • Вопрос задан
  • 57 просмотров
Решения вопроса 1
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы