## 3-bit case only. my %reorder = ( 0 => [ undef , [[0,1]], [[0,1],[1,2]] ], 1 => [ undef , [[0,1]], [[0,2]] ], 2 => [ [[0,1]] , undef , [[0,1],[1,2]] ], 3 => [ undef , undef , undef ], 4 => [ [[1,2],[0,1]], [[0,2]], [] ], 5 => [ undef , [[1,2]], undef ], 6 => [ [[0,1],[1,2]], undef , undef ], ); sub reorder { my( $dim, $height, $v, $args ) = @_; my $xforms = $reorder{ $args->[ $v ] }[ $height ]; return $args unless $xforms; for my $arg ( @$args ) { swapBits( $arg, @$_ ) for @$xforms; } return $args }