in reply to Find Length Of Longest Ascending/Descending Sequence

It won't win "most compact", but it might prove more efficient than many:

#! perl -slw use strict; sub z { my $soFar = 1; my $lastC = substr $_[0], 0, 1; my( $lastP, $bestN, $bestP ) = ( 0 ) x 3; for my $p ( 1 .. length( $_[0] )-1 ) { my $this = substr $_[0], $p, 1; my $d = abs( $this - $lastC ); if( $d != 1 and $d != 9 ) { $soFar = 1; $lastP = $p; } ++$soFar; if( $soFar > $bestN ) { $bestN = $soFar, $bestP = $lastP; } $lastC = $this; } return $bestN, $bestP; } while( <DATA> ) { chomp; print; my( $l, $p ) = z( $_ ); print ' ' x $p, substr( $_, $p, $l ), "\t", $l, "\n"; } __DATA__ 01234567890123456789 78901234567890123456 98765432109876543210 21098765432109876543 01234567890987654321 012345678890123456789 789012345677890123456 987654321099876543210 210987654322109876543 012345678900987654321 012345678909876543210

In the absence of an answer re: 090, I've noted your abs(1) criteria. Also, first of equal longest.

Could be simplified if you don't need to know where the longest occurs.

Output:

C:\test>junk 01234567890123456789 01234567890123456789 20 78901234567890123456 78901234567890123456 20 98765432109876543210 98765432109876543210 20 21098765432109876543 21098765432109876543 20 01234567890987654321 01234567890987654321 20 012345678890123456789 890123456789 13 789012345677890123456 78901234567 11 987654321099876543210 98765432109 11 210987654322109876543 21098765432 11 012345678900987654321 01234567890 11 012345678909876543210 012345678909876543210 21

Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.