I’m taking a Computer Engineering Course and Lab and have been learning how to use the software Quartus II to generate and test logic circuit schematics. The tutorial given in the class was quite long so it was hard to fully retain all the information and quickly find anything if I forgot a step. I went through the tutorial and wrote down a few helpful steps and thought I would share it.
I’ve been working hard on this part of the series because I really wanted the interactive cryptogram solver to make it quick and painless to jump right into solving and still give you plenty of room to expand the functionality and reflect your own style of solving. In this part of the series, we will create solver.py which will become our gateway to solving. It will allow us to quickly select a cipher class that we want to work with. We will also add a self documenting system that will allow us to use the solver without memorizing all the commands or shortcuts that each solver class may use. So, lets just jump right back into the code!
In Part I and Part II of this series we created the framework for our interactive solver and finally had a working AristocratSolver class. In this part, we will enhance our existing framework by adding some commonly used functions, add frequency counting of characters and character sequences to the AristocratSolver class, add the ability to display the current plaintext and ciphertext keys to the AristocratSolver class and then finally create a PatristocratSolver class that reuses all our work in the AristocratSolver class.
Continue reading “Creating an interactive cryptogram solver (Part III)”
In Part I of this series we started creating the framework for our solver by creating the Cipher and Aristocrat classes. You are probably thinking “This is a series about interactive solvers but this is all code!” Well, the classes inheriting from Cipher will be the ones doing all the work in our solver. In this part of the series we will finally create the CipherSolver class that will work with the Cipher classes to interactively get the work done. So lets just jump right into the code so we can finally get to our first working solver, the AristocratSolver class!
In this post we’ll first analyze what we are trying to accomplish and then begin to create an extensible framework that will allow us to adapt our solver to many different kinds of ciphers.
Building the framework
Our main goal is to create an extensible interactive solver, so lets break down the similarities that all ciphers have. You’ve got to think really generic here. All ciphers have the following similarities:
- They manipulate some kind of text.
- They have an encryption algorithm.
- They have a decryption algorithm.
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.
Recently, I’ve been playing with Google App Engine. It is a neat platform and I wanted to take it around with me so I could develop anywhere. To get a portable version of Google App Engine for Windows you need to download the following:
- Portable Python (Download the 2.5.x release)
- Google App Engine SDK (Download the Linux/Other Platforms release)
Recently, I purchased an eeePC because they were on sale and I wanted a small netbook that I could use as my primary solving computer for Cryptograms. I’m new to Linux so starting out was a little rough. I really wanted to get Python 2.6 running so that I could use the latest features of the language (Native SQLite support). Below are the steps I took to get everything working the way I wanted it to.
I have recently joined the American Cryptogram Association and have been busy trying to solve the items in the November/December issue of The Cryptogram magazine. Since I am still quite new to the world of cryptography and cryptograms, I am still building up my solving skills.
While attempting to solve a Patristocrat cryptogram, I began to wonder what processes or thoughts do other people use to solve Patristocrats?
Originally, I planned on having each person give one step in solving the below cryptogram. After seeing some of the comments that came in so far, I actually think it would be more beneficial to have as much detail from each person as possible. This way you can see more detail into how each person solves the same puzzle. So if you would like to, please tell me how you would go about solving this puzzle. You don’t have to explain from start to finish. Mainly the idea is how to get started. Most of the time, if you can get a little bit in then the rest starts to fall into place.
Thank you in advance for those who choose to participate. See the comments for all the great feedback!
Welcome to WordPress.com. This is your first post. Edit or delete it and start blogging!