Beefy Boxes and Bandwidth Generously Provided by pair Networks
There's more than one way to do things
 
PerlMonks  

Re: regex for word puzzle

by hv (Prior)
on Jun 13, 2005 at 09:28 UTC ( [id://466086]=note: print w/replies, xml ) Need Help??


in reply to regex for word puzzle

I have a program that I use for this sort of thing, specifically written always to generate a single regular expression.

The program is 'word', and it includes flags -a for "anagram", -u for "use any subset of the letters", and -D for "just show me the regexp".

For an exact anagram, word -Da rtesamcna gives:

/^(?:(?=.*e)(?=.*n)(?=.*c)(?=.*r)(?=.*a.*a)(?=.*m)(?=.*s)(?=.*t).{9,9} +)\z/oi

That is: require each of the single letters, require a double "a", and require exactly 9 letters.

For all subsets, word -Dua rtesamcna gives:

/^(?:(?:([encrmst])(?!.*\1)|([a])(?!.*\2.*\2))+)\z/oi

That is: require all matching letters to be from the list, and additionally don't allow more than one of any of [encrmst], nor more than two "a"s.

(Note: normal use of the word program also requires wrap from the same place.)

Hugo

Replies are listed 'Best First'.
Re^2: regex for word puzzle
by Anonymous Monk on May 17, 2011 at 02:46 UTC

    Assume your rack is rtesamcna. Assume also you have the list of valid words in TWL.txt. The following grep command will show you words formed using only letters in your rack, but it will use any number of the letters:

    grep -i '^[rtesamcna]*$' TWL.txt

    Not quite what you want. You don't want words with more than 1 R, or more than 2 A's. So we filter it out:

    grep -i '^[rtesamcna]*$' TWL.txt | grep -iEv 'r.*r|t.*t|e.*e|s.*s|a.*a.*a|m.*m|c.*c|n.*n'

    And finally, to show anything with at least 9 letters:

    grep -i '^[rtesamcna]*$' TWL.txt | grep -iEv 'r.*r|t.*t|e.*e|s.*s|a.*a.*a|m.*m|c.*c|n.*n' | grep ...... +...

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others making s'mores by the fire in the courtyard of the Monastery: (6)
As of 2024-04-26 08:13 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found