Beefy Boxes and Bandwidth Generously Provided by pair Networks
The stupid question is the question not asked
 
PerlMonks  

Re: Golf (Inspired): Repeated Phrases

by chipmunk (Parson)
on May 10, 2001 at 19:51 UTC ( #79444=note: print w/ replies, xml ) Need Help??


in reply to Golf (Inspired): Repeated Phrases

Here's a solution to start things off. I assume that runs of spaces in the strings have been squashed (tr/ //s;). For this solution, a phrase will appear in the results more than once if it occurs in the first string more than once and the second string at least once.

sub repeated { my@p;$_=pop()-1 for$m,$n; $_[1]=~($~=$1.$2)&&push@p,$~while$_[0]=~/(\w+)(?=(( \w+){$n,$m}))/g; @p }
95 characters.

Update: Shortened with the help of \b:

sub repeated { my@p;$m=pop;$n=pop; $_[1]=~$1&&push@p,$&while$_[0]=~/\b(?=((\w+\b ?){$n,$m}))/g; @p }
81 characters.

Update: Gotta remember to reset the array when using push! Thanks MeowChow! Added 5 characters to each of the above.

Update: MeowChow was actually pointing out a different problem... my code doesn't properly find phrases with less than the max number of words... I'm going to redo this completely and start a new sub thread when I get a working solution. (Darn you to heck, MeowChow! :D )


Comment on Re: Golf (Inspired): Repeated Phrases
Select or Download Code
Re: Re: Golf (Inspired): Repeated Phrases
by MeowChow (Vicar) on May 10, 2001 at 20:40 UTC
    I don't think this works quite right. Compare the output from the following two runs:
    @l = repeated('this dog a round', 'this dog a pound', 1, 3); @l = repeated('this dog a round', 'this dog a pound', 1, 4);
    UPDATE: Here's an 85-byte version that returns all the matches:
    sub repeated { ($s,$_,$m,$n)=@_;my@p;for$i($m..$n){$s=~$1&&push@p,$&while/\b(?=((\w+\ +b ?){$i}))/g}@p }
       MeowChow                                   
                   s aamecha.s a..a\u$&owag.print

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others romping around the Monastery: (17)
As of 2014-08-27 13:42 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The best computer themed movie is:











    Results (238 votes), past polls