This is a resource of the wordgame-programmers@egroups.com mailing list.
Click to subscribe to wordgame-programmers
However other variants are allowed to leave some blank spaces (if the blank spaces are givens, the code is similar to a crossword generator in spirit but usually not in implementation).SATOR AREPO TENET OPERA ROTAS
If this procedure stabilizes while there is still ambiguity in the choices for some positions, I pick the position that has the fewest choices and branch, either taking the first choice or continuing with the remaining choices. So this eventually degenerates to a brute force backtracking search but the intention is to make as much progress as possible with the dictionary between each branching step.
As noted above, the quality of the word list is important to the quality of the results. My program defaults to /usr/dict/words, but that's not a great choice because it only has the stemmed form of each word. I've been running it with my cryptogram dictionary instead, but you have to carefully check the output because that dictionary has a lot of non-words."