Solve a Bike Lock problem with 4 dials and 10 letters on each dial?

I have a WordLock bike lock with 4 dials and 10 letters on each dial. I saw a post ( "Solving" a word combination lock ) that someone used this program to find the correct lock combination. I don’t know how to use this program, so if someone can tell me the possible combinations that would be great!

Dial 1 Letters: S P H M T W D L F B
Dial 2 Letters: L E Y H N R U O A I
Dial 3 Letters: E N M L R T A O S K
Dial 4 Letters: D S N M P Y L K T E

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

Hi Marco,

I have the exact same lock (same letters on the same dials, in the same order) as OP, and am spinning my wheels trying to figure out how to use the handy-dandy code you helpfully shared from the other post.

It would be super helpful if you shared the complete list of 859 words – I can confirm the word I’m looking for is not one the the 173 you already shared, and I’m quite certain I’ll recognize the darn word when I see it.

Thanks in advance!

Could someone run this code for me and provide the complete list of 859 words or explain to me how to run the code myself? Thanks!

i am trying to run the code while on a trial version of mathematica. I copied the code and only replaced the letters for the lock that I have. How do I run the software? When I click run file, it downloads something and says I have no app to run it. Do I need to download mathematica for this code to work? thank you!

letters = "K L M N O P Q R S T
A B C D E F G H I J
A E I O R S T L N K
A B C D E F G H I J ";

dials = (ToLowerCase /@ StringSplit[#]) & /@ 
  StringSplit[letters, "\n"];

tup = Tuples[dials];
strings = StringJoin /@ tup;

words = Select[strings, DictionaryWordQ];