私は脳がフリーズしており、この問題の解決策を見つけることができません.
文字列リストを含む CustomSet というクラスを作成しました。CustomSet への参照を保持するクラスは、それをリストとして格納します。
public class CustomSet : IEnumerable<string>
{
public string Name { get; set; }
internal IList<string> elements;
public CustomSet(string name)
{
this.Name = name;
this.elements = new List<string>();
}
public IEnumerable<string> Elements
{
get
{
return elements;
}
}
public IEnumerator<string> GetEnumerator()
{
return elements.GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
}
したがって、このカスタム セットのリストを繰り返し処理して、列が customSet(s) の数であり、行が customSet 要素の乗算である 2D 文字列配列を出力します。
例として、リストに 3 つのカスタム セットがあるとします。1 番目には 3 つの要素があり、2 番目には 2 つの要素があり、3 番目には 3 つの要素がありました。3 列と 18 行 (3*2*3) を出力したいと思います。次のコードは、解決策の試みです。
CustomSet motion = new CustomSet("Motion");
motion.Elements.Add("low");
motion.Elements.Add("medium");
motion.Elements.Add("high");
CustomSet speed = new CustomSet("Speed");
speed.Elements.Add("slow");
speed.Elements.Add("Fast");
CustomSet mass = new CustomSet("Mass");
mass.Elements.Add("light");
mass.Elements.Add("medium");
mass.Elements.Add("heavy");
List<CustomSet> aSet = new List<CustomSet>();
aSet.Add(motion);
aSet.Add(speed);
aSet.Add(mass);
//problem code
int rows = 1;
for(int i = 0; i < aSet.Count; i++)
{
rows *= aSet[i].Elements.Count;
}
string[,] array = new String[aSet.Count, rows];
int modulus;
for (int i = 0; i < aSet.Count; i++)
{
for (int j = 0; j < rows; j++)
{
modulus = j % aSet[i].Elements.Count;
array[i, j] = aSet[i].Elements[modulus];
}
}
for (int j = 0; j < rows; j++)
{
for (int i = 0; i < aSet.Count; i++)
{
Console.Write(array[i, j] + " / ");
}
Console.WriteLine();
}
//end
Console.ReadLine();
ただし、コードは正しい文字列配列を出力しません (近いですが)。私が出力したいのは次のとおりです。
低い / 遅い / 軽い /
低 / 遅 / 中 /
低い / 遅い / 重い /
低い / 速い / 軽い /
低 / 高速 / 中 /
低い / 速い / 重い /
ミディアム / スロー / ライト /
ミディアム / スロー / ミディアム /
ミディアム / スロー / ヘビー /
ミディアム / ファースト / ライト /
中 / 速い / 中 /
ミディアム / ファースト / ヘビー /
高い / 遅い / 軽い /
高 / 遅 / 中 /
高い / 遅い / 重い /
高い / 速い / 軽い /
高 / 高速 / 中 /
高い / 速い / 重い /
この問題の変数は、リスト内の customSet の数と、各 CustomSet 内の要素の数です。