接頭辞が付いた2文字の順列を作成するにはどうすればよいですか?
このような:
NAMEaa NAMEab NAMEac NAMEad NAMEae NAMEaf.....。
接頭辞が付いた2文字の順列を作成するにはどうすればよいですか?
このような:
NAMEaa NAMEab NAMEac NAMEad NAMEae NAMEaf.....。
for (char c1 = 'a'; c1 <= 'z'; c1++)
{
for (char c2 = 'a'; c2 <= 'z'; c2++)
{
Console.WriteLine("NAME" + c1 + c2);
}
}
ところで、それらは順列ではありません。
LINQを使用すると、目的の結果を簡単に取得できます。
string prefix = "NAME";
string alphabet = "abcdefghijklmnopqrstuvwxyz";
IEnumerable<string> words = from x in alphabet
from y in alphabet
select prefix + x + y;
すべてのアルファベットを含む配列を作成し、そのインデックスを2回ループします。
それは順列ではなく、組み合わせです。
必要な文字を文字列に入れます。
string chars = "abcdefghijklmnopqrstuvwxyz";
可能な組み合わせの数は次のとおりです。
int combinations = chars.Length * chars.Length;
特定の組み合わせ(0から組み合わせ-1)を取得するには:
string str =
"NAME" +
chars.Substring(combination / chars.Length, 1) +
chars.Substring(combination % chars.Length, 1);
すべての組み合わせを取得するには、それらをループするだけです。
string chars = "abcdefghijklmnopqrstuvwxyz";
int combinations = chars.Length * chars.Length;
List<string> result = new List<string>();
for (int i = 0; i < combinations; i++) {
result.Add(
"NAME" +
chars.Substring(combination / chars.Length, 1) +
chars.Substring(combination % chars.Length, 1);
);
}