I’m an occasional speaker at my local Python meet-up group and portions of the code behind this site have featured prominently in several recent talks. Here are the slides…
This talk introduces the audience to using hill climbing optimization techniques as a means of breaking mixed-alphabet substitution ciphers. The talk introduces the core concepts of the approach and directs the audience to a series of resources (including sample code) where they can learn more.
One concept we discussed at length during the Q&A portion of the talk was the idea of using multiple fitness functions to refine the optimization process. For code breaking, this would involve using the traditional n-gram approach (usually trigrams) early in the process and switching to a dictionary matching approach to refine the final answer.
Resource File – word list for small word solver projects:
Link to copy of word list (Open Source – Enable)