Все комбинации List[] переменной - C#
Формулировка задачи:
Всем добра!
Либо я криво гуглю, либо я слишком плохо прогаю
Нужно написать функцию
То есть
int[][] Func(params List<int>[] _Filters)
, которая получает все комбинации значений массива_Filters
в массивint[][] result
Но!
Обычными 2-мя циклами здесь не обойтись, так как комбинации нужны особенные, а именно:
Листинг программы
- int[][] result = Func(
- new List<int> { 1, 2, 3, 4 },
- new List<int> { 5 },
- new List<int> { 6, 7 },
- );
- /**
- * result[0][0] = 1
- * result[0][1] = 5
- * result[0][2] = 6
- *
- * result[1][0] = 1
- * result[1][1] = 5
- * result[1][2] = 7
- *
- * ...
- **/
1-й индекс
массива комбинацийразмером _Filters.Length (количеством List`ов)
являетсяномером комбинации
, а2-й индекс
являетсязначением из соответствующего List`а
в массиве_Filters
(то естьresult[][k]
соответствует значению изk`ого List`а
в массиве_Filters
) Помогите, пожалуйста, хотя бы гуглофразой! Бьюсь уже несколько часов.. Решение задачи: «Все комбинации List[] переменной»
textual
Листинг программы
- static T[][] Func<T>(params IList<T>[] lists)
- {
- var all = new List<T[]>();
- var idx = new int[lists.Length];
- while (idx[0] < lists[0].Count)
- {
- all.Add(lists.Select((list, i) => list[idx[i]]).ToArray());
- idx[idx.Length - 1] += 1;
- for (int i = idx.Length - 1; i > 0; i--)
- {
- idx[i - 1] += idx[i] / lists[i].Count;
- idx[i - 0] %= lists[i].Count;
- }
- }
- return all.ToArray();
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д