http://qs321.pair.com?node_id=341500


in reply to Iterating over Blocks of 2-Dim Array

Algorithmically, you can think of this as a tensor product of 2 2x2 matrices. In code, you could represent this as
for my $a (0,1) { for my $b (0,1) { print "Quadrant $a,$b:\n"; for my $i (0,1) { for my $j (0,1) { my $row = 2*$a + $i; my $col = 2*$b + $j; print " element $i,$j => matrix coord $row, $col\n"; } } } }
If you wanted to convert in the opposite direction, just use the inverse equations:
for my $row (0..3) { for my $col (0..3) { print "Quadrant ", int($row/2),',',int($col/2); print " Element ", $row % 2,',', $col % 2,"\n"; } }
Update: added inverse operation.

-Mark