Combinatoria en PHP

Con la función getCombinations obtenemos la combinatoria en PHP todos las combinaciones de valores posibles del array pasado como parámetro.

    /**
     * A partir del array recibido como parametro devuelve un array con todas las combinaciones de valores posibles
     * del array
     * 
     * @param $list
     * @return array
     */
    public function getCombinations($list)
    {
        $terms = array();
        $bits = count($list); //bits of binary number equal to number of words in query;

        //Convert decimal number to binary with set number of bits, and split into array
        $dec = 1;
        $binary = str_split(str_pad(decbin($dec), $bits, '0', STR_PAD_LEFT));

        while ($dec < pow(2, $bits)) {
            //Each 'word' is linked to a bit of the binary number.
            //Whenever the bit is '1' its added to the current term.
            $curterm = "";
            $i = 0;
            while ($i < ($bits)) {
                if ($binary[$i] == 1) {
                    $curterm .= $list[$i] . " ";
                }
                $i++;
            }
            $terms[] = $curterm;
            //Count up by 1
            $dec++;
            $binary = str_split(str_pad(decbin($dec), $bits, '0', STR_PAD_LEFT));
        }

        return $terms;
    }

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *