I have a working algorithm, but it needs work.
I want a program to take five arrays (@a - @e, each array
runs at least 0-2) and a produce every permutation. This is easy for
me with a for loop. But, to complicate things, I want to produce
these permutations in a specific sequence - namely I want all
the numbers to stay non-zero as long as possible (except the middle
one, c - this one can be whatever).
For example, I want 01010 to come before 02000 (two non-zeros vs.
one non-zero), but a simple nested for loop gets it wrong.
I was able to solve this problem and get it right, but I had to
use 15 for loops like this one...
$b = 0;
$d =0;
for ($a=scalar(@minus2)-1; $a>=1; $a--){
for ($e=scalar(@plus2)-1; $e>=1; $e--){
for ($c=scalar(@mut)-1; $c>=0; $c--){
push(@possible, $minus2[$a].$minus[$b].$mut[$c].$plus[$d].$plus2[$e]);
}}}
where in each loop I hold an increasing number of variables at
at zero.
This just seems really inefficient and ugly to use 15 loops.
Assuming this is clear, any ideas on how to improve this algroithm?
Thanks,
Greg