title: Crosswords in Mathematica using Pattern Matching
body: <p>Suppose I select all 3 char words from the Mathematica dictionary:  </p>
  
  <pre><code>all3 = Characters /@ Select[DictionaryLookup[], StringLength[#] == 3 &amp;];  
  </code></pre>
  
  <p>and I want to form full scrabble-like sets, like:  </p>
  
  <pre><code>A B E
  R A Y
  E R E  
  </code></pre>
  
  <p>Where the words can be read horizontally and vertically.  </p>
  
  <p>Clearly, the sets can be found with recursion and backtracking. But:</p>
  
  <p>1) Is there a way to solve it using patterns?<br>
  2) For which dimensions are there valid solutions?  </p>
  
  <p><b>Edit</b>  </p>
  
  <p>I wrote the question for <code>DictionaryLookup[]</code> just because it's a reasonable sized database of variable length records. My real problem is not related to Dictionary lookups but to a certain kind of loom patterns.</p>