Beefy Boxes and Bandwidth Generously Provided by pair Networks
Do you know where your variables are?

Re: Find Length Of Longest Ascending/Descending Sequence

by moritz (Cardinal)
on May 10, 2011 at 08:41 UTC ( #903927=note: print w/replies, xml ) Need Help??

in reply to Find Length Of Longest Ascending/Descending Sequence

Not a working solution, just a thought experiment:

Perl 6 has a regex construct spelled <*abcd>. It is a shortcut for a|ab|abc|abcd (also note that in Perl 6 regexes, the longest pipe-delimited alternative wins, not the first one as in Perl 5).

Sadly no compiler implements the <*abcd> feature yet, so I can't demonstrate it, but I think something like this should work:

my token longest_asc_desc { # ascending | <*0123456789> ** <?after 9> | <*1234567890> ** <?after 0> | <*2345678901> ** <?after 1> ... # descending: | <*9876543210> ** <?after 0> | <*8765432109> ** <?after 9> | <*7654321098> ** <?after 8> ... }

Replies are listed 'Best First'.
Re^2: Find Length Of Longest Ascending/Descending Sequence
by Ratazong (Monsignor) on May 10, 2011 at 09:22 UTC

    nice feature :-)

    How will it match data like the following?

    11101234567890123411111 => expected result: 15
    Will you need to create the pattern in <*0123456789> dynamically based on the length of the data?

      Notice the repetition:
      <*0123456789> ** <?after 9>

      is short for

      <*0123456789> [ <?after 9> <*0123456789>]*

      So if it matches the first one, and upto 9 (that's what the <?after 9> checks), it tries again to start with 0.

      To extract the longest match, you need to collect all, and overlapping (because the last digits of an ascending sequence can be the first of a descending sequence):

      my regex seq { ... } my $length = [max] $teststring.match(&seq, :g, :overlap)>>.chars;

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://903927]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others having an uproarious good time at the Monastery: (3)
As of 2018-08-17 16:50 GMT
Find Nodes?
    Voting Booth?
    Asked to put a square peg in a round hole, I would:

    Results (182 votes). Check out past polls.