#!/usr/bin/perl use strict; use warnings; $| = 1; # set print buffering to not buffe print "OLD MATRIX:\n"; my $matrix = [ [ 4, 3, 2, 1], [ 1, 2, 1, 1], [ 4, 1, 3, 4], [ 5, 6, 5, 4] ]; printMatrix($matrix); my $nRows = scalar(@{$matrix}); my $nCols = scalar(@{$matrix->[0]}); my $newMatrix = []; print "\n"; foreach my $row (0..($nRows-1)){ my $doIt = 1; foreach my $col (1..($nCols-1)){ if(abs($matrix->[$row][($col-1)] - $matrix->[$row][$col])>1){ $doIt = 0; print "*** DROPPING ROW $row ***\n"; last; } } push(@{$newMatrix},$matrix->[$row]) if($doIt); } print "\n"; print "NEW MATRIX:\n"; printMatrix($newMatrix); exit(0); sub printMatrix { my($matrix) = @_; my $nRows = scalar(@{$matrix}); return 0 if($nRows==0); my $nCols = scalar(@{$matrix->[0]}); return 0 if($nCols==0); foreach my $row (0..($nRows-1)){ print " ROW $row: "; foreach my $col (0..($nCols-1)){ printf "%3d ",$matrix->[$row][$col]; } print "\n"; } return 1; } #### OLD MATRIX: ROW 0: 4 3 2 1 ROW 1: 1 2 1 1 ROW 2: 4 1 3 4 ROW 3: 5 6 5 4 *** DROPPING ROW 2 *** NEW MATRIX: ROW 0: 4 3 2 1 ROW 1: 1 2 1 1 ROW 2: 5 6 5 4