That's a pretty dumb idea because the number of permutations grows even worse than exponentially. For instance, my /usr/share/dict/words contains 45427 entries, which is only slightly more than 8!, the number of permutation you get with 8 different letters.

If you don't want to use one of the many canned solutions that are out there (and why wouldn't you?), a reasonably efficient solution goes as follows:

  1. Create a histogram of your search word (so "car" becomes "1 a, 0 b, 1 c, 0 d, ...., 0 q, 1 r, 0 s, ..., 0 z").
  2. For all words in the dictionary, create a histogram of said word. If the histograms are identical, the words are anagrams of each other. (If you want to find words that can be made from a subset of the letters, look for anagrams which have values equal or less than your search word. For solutions with spaces (groups of words), recurse.)
But it's much better to use an existing solution written in C (C is much faster than Perl for this kind of work), and just qx it.

In reply to Re^2: Solving Anagrams by Anonymous Monk
in thread Solving Anagrams by Cody Pendant

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.