http://www.perlmonks.org?node_id=1008507


in reply to Challenge: Design A Better Hangman Algorithm

Stumbled on this (and the previous) old thread. Thought I could provide some input even if the thread is dead.

Strategy in this thread up to this point:

  1. Find all possible candidate words, given correct guesses so far. e.g.: If the word is "PerlMonks" and we've got "Pe___o_ks", candidate words will match the regex "Pe...o.ks" perfectly.
  2. Determine which unguessed letter appears in the most candidate words. Break ties for letters that occur most of all (i.e. density).
  3. Discussion of using probabilistic/heuristic analyses, with undetermined efficacies.

I would suggest one more deterministic strategy before getting to (3): entropy and distribution.

Suppose we have the following five candidate words: aacd, aaef, bbgh, bibj. Using rules listed in (2), letters 'a' and 'b' are still tied.

However, it's clear that guessing 'b' will give us more information than 'a'. While guessing 'b' would reveal the solution, guessing 'a' would not. This is because 'b' is more evenly and chaotically distributed throughout the length of the words, allowing the step (1) in the next guessing round to narrow down candidate words even faster.

  • Comment on Re: Challenge: Design A Better Hangman Algorithm