Мой код имеет список с именем INPUTS, который содержит динамическое количество списков, давайте назовем их A, B, C, ... N. Эти списки содержат динамическое число событий
Я хотел бы вызывать функцию с каждой комбинацией событий. Для иллюстрации на примере:
INPUTS: A(0,1,2), B(0,1), C(0,1,2,3)
Мне нужно вызывать мою функцию много раз для каждой комбинации (входной счетчик динамический, в этом примере это три параметра, но он может быть больше или меньше)
function(A[0],B[0],C[0])
function(A[0],B[1],C[0])
function(A[0],B[0],C[1])
function(A[0],B[1],C[1])
function(A[0],B[0],C[2])
function(A[0],B[1],C[2])
function(A[0],B[0],C[3])
function(A[0],B[1],C[3])
function(A[1],B[0],C[0])
function(A[1],B[1],C[0])
function(A[1],B[0],C[1])
function(A[1],B[1],C[1])
function(A[1],B[0],C[2])
function(A[1],B[1],C[2])
function(A[1],B[0],C[3])
function(A[1],B[1],C[3])
function(A[2],B[0],C[0])
function(A[2],B[1],C[0])
function(A[2],B[0],C[1])
function(A[2],B[1],C[1])
function(A[2],B[0],C[2])
function(A[2],B[1],C[2])
function(A[2],B[0],C[3])
function(A[2],B[1],C[3])
Это то, о чем я думал до сих пор:
Мой подход до сих пор заключается в создании списка комбинаций. Сама комбинация элементов представляет собой список «индексов» для входных массивов A, B и C. Для нашего примера:
мой список iCOMBINATIONS содержит следующие списки iCOMBO
(0,0,0)
(0,1,0)
(0,0,1)
(0,1,1)
(0,0,2)
(0,1,2)
(0,0,3)
(0,1,3)
(1,0,0)
(1,1,0)
(1,0,1)
(1,1,1)
(1,0,2)
(1,1,2)
(1,0,3)
(1,1,3)
(2,0,0)
(2,1,0)
(2,0,1)
(2,1,1)
(2,0,2)
(2,1,2)
(2,0,3)
(2,1,3)
Тогда я бы сделал это:
foreach( iCOMBO in iCOMBINATIONS)
{
foreach ( P in INPUTS )
{
COMBO.Clear()
foreach ( i in iCOMBO )
{
COMBO.Add( P[ iCOMBO[i] ] )
}
function( COMBO ) --- (instead of passing the events separately)
}
}
Но мне нужно найти способ составить список iCOMBINATIONS для любого заданного числа ВХОДОВ и их событий. Есть идеи?
Есть ли лучший алгоритм, чем этот?
любой псевдокод, который мне поможет, будет великолепен.
C # (или VB)
Спасибо