Posted in

Variable Number of Nested For Loops

An old problem that came to my head a couple of days ago. I solved it as an exercise in Fortran class about 25 years ago, my current solution is:

$lbound = 1; 
$ubound = 4; 
$loops = 3; 
$numbers = array(); 
for($i=1; $i<=$loops; $i++) { 
  $numbers[$i] = $lbound; 
} 
$nm = pow($ubound-$lbound+1,$loops); 
printf("nm=%s\n", $nm); 
$cnt = 0; 
while(true) { 
  printf("%s. %s\n",++$cnt, implode(',',$numbers)); 
  for($l=$loops; $l>=1; $l--) { 
    $numbers[$l]++; 
    if( $numbers[$l]>$ubound ) { 
      $numbers[$l] = $lbound; 
    } 
    else { 
      break; 
    } 
  } 
  if( $cnt==$nm) { 
    break; 
  } 
}