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.
95 characters.sub repeated { my@p;$_=pop()-1 for$m,$n; $_[1]=~($~=$1.$2)&&push@p,$~while$_[0]=~/(\w+)(?=(( \w+){$n,$m}))/g; @p }
Update: Shortened with the help of \b:
81 characters.sub repeated { my@p;$m=pop;$n=pop; $_[1]=~$1&&push@p,$&while$_[0]=~/\b(?=((\w+\b ?){$n,$m}))/g; @p }
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 )
|
---|
Replies are listed 'Best First'. | |
---|---|
Re: Re: Golf (Inspired): Repeated Phrases
by MeowChow (Vicar) on May 10, 2001 at 20:40 UTC |
In Section
Meditations