D で非常に単純なものをコーディングしようとしていますが、標準ライブラリのテンプレート関数の 1 つ (具体的にはnextPermutation
からstd.algorithm
) にいくつか問題があります。
私がやろうとしていることの核心は、パンデジタル数のすべての順列 (つまり、1 から 9 までのすべての値を正確に 1 回含む数) を作成することです。
これを行うために、次のことを行いました。
import std.algorithm;
import std.conv;
int[] pandigitals()
{
char[] initial = "123456789".dup;
auto pan = [to!int(initial)];
while(nextPermutation!(initial)) {
pan ~= to!int(initial);
}
return pan;
}
これは私にエラーを与えます:
エラー: nextPermutation の型を解決できません!(初期)
また、タイプを明示的に設定しようとしました:
while(nextPermutation!("a<b", char[])(initial))
ただし、これにより、テンプレートと一致しないというエラーが発生します。
エラー: テンプレート インスタンス std.algorithm.nextPermutation!("a < b", char[]) はテンプレート宣言と一致しません nextPermutation(alias less = "a < b", BidirectionalRange)(ref BidirectionalRange range) if (isBidirectionalRange!BidirectionalRange && hasSwappableElements!BidirectionalRange)
呼び出しの正しい形式は何ですか?