http://www.perlmonks.org?node_id=521350

randyk has asked for the wisdom of the Perl Monks concerning the following question:

I have an expansion involving N factors:

(a[0][0] + a[0][1]) (a[1][0] + a[1][1]) (a[2][0] + a[2][1]) ... (a[N-1][0] + a[N-1][1])
for which I'm trying to find general expressions for the 2^N terms involved when this is all multiplied out. Getting an expression for two of the terms is straightforward when the 2nd indices of the a coefficients are the same:
$C[0] = 1; $C[$N-1] = 1; for ($i=0; $i<$N; $i++) { $C[0] *= $a->[$i]->[0]; $C[$N-1] *= $a->[$i]->[1]; }
but I'm stuck on the problem of getting the other terms. Can someone see a way to do this? Thanks.

UPDATE
Just to clarify the notation, what's desired is expressions for the 2**N coefficients of the expansion. For example, for N = 2 factors and 2**N = 4 terms:

(a[0][0] + a[0][1]) * (a[1][0] + a[1][1]) = C[0] + C[1] + C[2] + C[3], where C[0] = a[0][0] * a[1][0] C[1] = a[0][0] * a[1][1] C[2] = a[0][1] * a[1][0] C[3] = a[0][1] * a[1][1]
No meaning is intended for the order of the indices of the C array. There's a number of approaches suggested below that will get me going - thanks to all who responded!