何かの可能なすべての順列を生成するスクリプトがあります。問題は、最大 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 の可能性を出力していますが、それは私が望むもののごく一部です。(私は文字通りすべての可能性を実行したいと思っています。これはメモリ使用量の大きな問題になりますが、それは別の問題です。)
誰かがこれを行う方法を知っていますか?