Beefy Boxes and Bandwidth Generously Provided by pair Networks
P is for Practical
 
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
Replies are listed 'Best First'.
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 chanting in the Monastery: (16)
As of 2015-07-07 17:09 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (92 votes), past polls