Множественный цикл foreach с более чем 37 миллионами возможностей

Мне было поручено создать список всех возможностей, используя данные в 8 блоках.

У 8 блоков есть следующее количество возможностей:

*Block 1: 12 possibilities
*Block 2: 8 possibilities
*Block 3: 8 possibilities
*Block 4: 11 possibilities
*Block 5: 16 possibilities
*Block 6: 11 possibilities
*Block 7: 5 possibilities
*Block 8: 5 possibilities

Это дает потенциальное количество в 37 171 200 возможностей.

Я попытался просто выполнить и ограничиться только отображением значений, возвращаемых с правильной длиной строки, например:

foreach($block1 AS $b1){
    foreach($block2 AS $b2){
        foreach($block3 AS $b3){
            foreach($block4 AS $b4){
                foreach($block5 AS $b5){
                    foreach($block6 AS $b6){
                        foreach($block7 AS $b7){
                            foreach($block8 AS $b8){
                                if (strlen($b1.$b2.$b3.$b4.$b5.$b6.$b7.$b8) == 16)
                                {
                                    echo $b1.$b2.$b3.$b4.$b5.$b6.$b7.$b8.'<br/>';
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}

Однако время выполнения было слишком большим для вычисления. Мне было интересно, знает ли кто-нибудь более простой способ сделать это?

6
задан Numan1617 16 February 2012 в 11:38
поделиться