次のコードを検討してください。
List<string> a = new List<string>(new string[] { "a1", "a2" });
List<string> b = new List<string>(new string[] { "b1", "b2" });
List<string> c = new List<string>(new string[] { "c1", "c2" });
List<List<string>> input = new List<List<string>>();
input.Add(a);
input.Add(b);
input.Add(c);
List<List<string>> output=List<List<string>> PickOneFromEachSet(input)
PickOneFromEachSet
順序を考慮せずに各セットから要素を選択します。
2^3=8 通りの組み合わせが可能です。つまり、出力は次のようになります。
{"a1","b1","c1"},
{"a1","b1","c2"},
...
{"a2","b2","c2"}
そのような関数をどのように構築すればよいでしょうか?