Все комбинации 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(); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д