in reply to Find Length Of Longest Ascending/Descending Sequence
Any sequence of consecutive 1 or 9 reflects ascending or descending sequences.
The difficulty is to get all overlapping pairs in an elegant way w/o trouble with edge cases.
Version 1 manipulates pos() of m//g
Version 2 uses reduce {...;$b}
use List::Util qw/max reduce/; while(<DATA>){ chomp; #-- Version 1 my $diff=""; while (/(\d)(\d)/g) { $diff.=($2-$1)%10; pos($_)--; } my $v1= 1 + max map { length } $diff =~ m/(1+|9+)/g; #--- Version 2 $diff=""; reduce { $diff.=($a-$b)%10; $b} split //; my $v2= 1 + max map { length } $diff =~ m/(1+|9+)/g; print "V1: $v1 V2: $v2 $_\n"; } __DATA__ 461771621368210983721913243963580233112903255149955120374576
Cheers Rolf
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: Find Length Of Longest Ascending/Descending Sequence
by ambrus (Abbot) on May 20, 2011 at 12:20 UTC | |
by LanX (Saint) on May 20, 2011 at 13:48 UTC |