0

何かの可能なすべての順列を生成するスクリプトがあります。問題は、最大 10 文字、最小 3 文字のみをリストする方法がわかりません。

<?php 
ini_set('memory_limit', '-1');
ini_set('max_execution_time', '0');

$possible = "abcdefghi";

$input = "$possible";

function string_getpermutations($prefix, $characters, &$permutations)
{
    if (count($characters) == 1)
        $permutations[] = $prefix . array_pop($characters);
    else
    {
        for ($i = 0; $i < count($characters); $i++)
        {
            $tmp = $characters;
            unset($tmp[$i]);

            string_getpermutations($prefix . $characters[$i], array_values($tmp), $permutations);
        }
    }
}
$characters = array();
for ($i = 0; $i < strlen($input); $i++)
    $characters[] = $input[$i];
$permutations = array();

print_r($characters);
string_getpermutations("", $characters, $permutations);

print_r($permutations);

?>

現在、約 400,000 の可能性を出力していますが、それは私が望むもののごく一部です。(私は文字通りすべての可能性を実行したいと思っています。これはメモリ使用量の大きな問題になりますが、それは別の問題です。)

誰かがこれを行う方法を知っていますか?

4

0 に答える 0