A great carpenter does not need to know how to make a hammer or saw in order to create a masterpiece.
A while back I wrote a bunch of articles describing how to create your own interactive cryptogram solver using python. I’ve used it a lot in my own personal solving and have had a few friends use it too but it definitely is not a tool for everyone. There are a lot of great tools out there for solving ciphers but many of them are very technical, require a special environment to run, or require programming knowledge and experience. Now, I don’t want to down play the usefulness of these great tools or tell anyone that they shouldn’t learn computer programming (Note: I think all computer users should know the very basics of programming logic as it is so useful for many things). That being said, there are many people out there who love a good challenge but either don’t have the desire or the time to learn to program. Sometimes the greater skill is knowing how to use the tools properly and efficiently. A great carpenter does not need to know how to make a hammer or saw in order to create a masterpiece.
So for all you great carpenters (solvers) out there, I have ported my interactive cryptogram solver to the web! No downloads, no special environments (other than a modern web browser), and no programming skills needed. Just a clean area where you can do what you do best: solving.[Read More]
While working on the Beginner’s Guide to the ACA, there was one technique that consistently showed up in all the research material: Pattern Words! At first I didn’t really understand how great they were. For those who don’t know about them or need a refresher, I’ll discuss a few of the different pattern types that I have come across. Afterwards, I’ll discuss my own Pattern Word Search Tool. Lets get started![Read More]
When I first joined the ACA and opened my starter packet, I was eager to jump right in and start solving Aristocrats and Patristocrats. I tried to solve as many as I could. Once I got stuck I would try to learn a different way to solve in hopes that it would get me unstuck. There is so much great information available on solving different cipher types and trying out new techniques. Unfortunately, since there is so much great information, it is difficult to figure out where to start or what resources to use. I found myself frequently getting lost in material too advanced at the early stage and becoming quite frustrated when the information did not penetrate my thick skull.
After one frustrating week, I contacted LIONEL, the ACA Recruitment Committee chairman, in hopes of finding some form of beginner’s guide to help me stay focused. He mentioned the “Young Tyros Newsletter”. It is a wonderful resource and I really recommend all new members and even non-members to read them. They have lots of great insights and tips to get you unstuck. In our discussions, I proposed that we should create a “Beginner’s Guide to the ACA”. I definitely didn’t want to re-hash all the great information out there. My goal was to compile a small list of the most important topics for a beginner to know and then point them in the right direction of all the other great materials out there.
LIONEL put me in contact with a few members who graciously agreed to send me some of their notes on how they solved some of the lower level Aristocrat and Patristocrat cons. Their notes and insights have been a great help in increasing my knowledge and solving abilities. It took quite a long time and many iterations before I was satisfied with it but I finally finished the first version of the “Beginner’s Guide to the ACA!” This would not have been possible without the help of BECASSE, GGMA, LIONEL, MICROPOD, MATANZA, and ZANAC. I am very grateful for their help.
You can download the Beginner’s Guide to the ACA below. Hopefully, it’ll help someone not get frustrated and lose interest in cryptology before they gave it a good chance.
I’ve been a member of the ACA (American Cryptogram Association) for about a year now. I started out solving Aristocrats and Patristocrats with pen and paper. It was definitely a slow start as trial and error created a lot of eraser dust on my desk. Being a programmer by trade, my brain instantly sees how I could speed up the process using computers and programming. Now, I didn’t want to ruin the sense of accomplishment that I got when I solved my first Aristocrat by hand by making the computer just do all the work for me. It has taken much constraint for me not to write an automatic solver. The happy medium I found was with computer assisted solving. Let the computer do all the tedious manual labor and let my mind work on the actual solving process and techniques.
I started writing my own interactive solver about a month after I joined the ACA and I wanted to share my experience with others. Hopefully, someone will find this information useful or it might inspire them to delve into cryptography or programming.
My prerequisites for an interactive solver are as follows:
- Has to be easily modified as needed when inspiration strikes.
- Has to be extendable so that it can be utilized for any kind of cipher.
- The programming language used has to be freely available and easy to install on most major operating systems.
- The programming language used has to be relatively easy to understand for new users.
Out of all of the languages that I have used over the years, Python scored really high with the above prerequisites. Python comes pre-installed on most major operating systems (except windows) or is very easy to obtain and install. Now this doesn’t mean that you can’t use a different programming language to create an interactive solver. Any programming language will work just fine. Whatever you are comfortable with is the best choice for you.
There are many resources for learning python so I won’t be going into great detail over all the language features or syntax nor will this be a beginner’s tutorial for python. If you are in need of python learning materials check out the following:
- How to think like a computer scientist: Learning with Python
- Dive Into Python
- Mike Cowan’s Learning to program in python for novice programmers and cipher enthusiasts
This is only the introduction but we’ll jump right into the programming in Part I. Each Part will extend our solver with more functionality and hopefully we’ll end up with a easy to use interactive solver!
Note: For now all the code will be for Python 2.6. Most operating systems are still bundling this version so it is the most accessible for now.