Search code examples
phppermutationfactorial

Permutation of factorial in php


Don't know how to explain. But maybe example below will be make you understandable what my problem is.

Example :

I have an array with 3 elements.

$elements = array( 'A', 'B', 'C' );

The permutation will be 3 in 3. so the result are :

A-B-C ; A-C-B ; B-A-C ; B-C-A ; C-A-B; C-B-A

I don't want any permutation 2 in 3 or 1 in 3, just 3 in 3 as you can see in example. So if I have 4 elements in an array, the permutation is 4 in 4. and so on...

(I think the number of permutations is 3! = 1*2*3 = 6 permutations, 4! = 1*2*3*4 = 24 permutations... that why I call Permutations of Factorial.)

If there are other question and answer similar to my problem, please let me know


Solution

  • Use a recursive function:

    function permutations($elements) {
        if(count($elements)<2) return $elements;
    
        $newperms= array();
        foreach($elements as $key=>$element) {
            $newelements= $elements;
            unset($newelements[$key]);
    
            $perms= permutations($newelements);
            foreach($perms as $perm) {
                $newperms[]= $element."-".$perm;
            }
        }
        return $newperms;
    }
    

    Didn't test it, so there is still work for you ;-)