私のコードには、動的な数のリストを含む INPUTS というリストがあります。それらを A、B、C、.. N と呼びましょう。これらのリストには、動的な数のイベントが含まれています。
イベントの組み合わせごとに関数を呼び出したいと思います。例を示します。
INPUTS: A(0,1,2), B(0,1), C(0,1,2,3)
組み合わせごとに関数を何度も呼び出す必要があります (入力カウントは動的です。この例では 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)
}
}
しかし、任意の数の INPUTS とそのイベントに対してリスト iCOMBINATIONS を作成する方法を見つける必要があります。何か案は?
実際にこれよりも優れたアルゴリズムはありますか? 私を助ける擬似コードは素晴らしいでしょう。
C# (または VB)
ありがとうございました