It is exactly the same as the one that was posted:
letters = "S P H M T W D L F B
L E Y H N R U O A I
E N M L R T A O S K
D S N M P Y L K T E ";
dials = (ToLowerCase /@ StringSplit[#]) & /@
StringSplit[letters, "\n"];
tup = Tuples[dials];
strings = StringJoin /@ tup;
words = Select[strings, DictionaryWordQ];
That list contains 859 words. Here's the first bit:
If this was for a lock it might be true that more frequent words are chosen with a higher probability. Here are the 50 most frequent words that are possible:
(Reverse@SortBy[wordsfreqs, Last])[[1 ;; 50]]
Perhaps people would not use stop words. Here's a way to do that:
stopwordlist =
Complement[DictionaryLookup[], DeleteStopwords[DictionaryLookup[]]];
TableForm[
Partition[
Select[(Reverse@SortBy[wordsfreqs, Last]), !
MemberQ[stopwordlist, #[[1]]] &][[1 ;; 200]][[All, 1]], 10]]
Cheers,
Marco