この質問に基づいて
固定長で文字の組み合わせを作成する PHP アルゴリズムを作成しました (基本的には Java の回答を書き直したものです)。
private function getCombination($length, $input) {
$result = array();
if ($length == 0) {
return $result;
}
$first = substr($input, 0, $length);
$result[] = $first;
if (strlen($input) == $length) {
return $result;
}
$tails = $this->getCombination($length - 1, substr($input, 1));
foreach ($tails as $tail) {
$tmp = substr($input, 0, 1) . $tail;
if (!in_array($tmp, $result)) {
$result[] = $tmp;
}
}
return array_merge($result, $this->getCombination($length, substr($input, 1)));
}
別の質問、より大きなセットの固定長の非反復順列の作成については、順列をインデックス可能にする(素晴らしい)アルゴリズムが与えられ、与えられたときに常にまったく同じ順列を生成する「キー」を提供することで効果的にそれらをアドレス指定可能にします同じ文字セットと同じ長さ。
さて、基本的には同じものが必要ですが、他の質問の順列とは対照的に、組み合わせが必要です。
上記のアルゴリズムを同じように変更できますか? のような関数を作成する意味
public function getCombinationByIndex($length, $index);
それは、事前に作成せずにアルゴリズムで作成された1000の可能な組み合わせのうちの1つを返しますか?