CPT4: Cryptogram Puzzle Tool for X / Linux

cpt4 menu bar

Cryptogram Puzzle Tool helps solve the simple cryptogram puzzles that appear in the daily newspapers. While these puzzles can often be solved almost by inspection, CPT4 provides a handy tool for the ones that turn out to be not quite so easy.

If you just want a little bookkeeping help, CPT4 will instantly update all occurrences of the new assignments as well as provide frequency and used/not-used letter lists as you drag-and-drop or key in suspected solution letters. But if you'd rather have the computer do the work, the automatic solution algorithm will usually come very close to a complete solution in just a few seconds.
Bonus: CPT4 can also create new puzzles: simply key in or load plaintext from a file, and select the 'Encrypt' item from the Options menu.

Screen Shots

HERE is a full screen shot of CPT4 in edit mode, with a puzzle already loaded (8 KB).
HERE is CPT4 in solve mode, with the a solution underway (15 KB).
HERE is a portion of my KDE desktop with the CPT4 icon and shortcut visible. (4 KB).

System Requirements

CPT4 runs on Linux / X-Window systems, with no special requirements beyond the availablity of compatible versions of the normal GTK+ suite of libraries. All distributions to date have been developed on my Pentium based PC under more or less standard RedHat and Slackware installations, so I expect that the source distributions, at least, should work on most similar installations.

The 4.2.0-1 binary shared library distribution was compiled from the 4.2.0 source distribution (see below), but on a vanilla Slackware 10.2 system using glib-2.6.6, Gtk+2.6.10, pango-1.8.2, atk-1.9.1, and so forth. It shows these dependencies:

  libgtk-x11-2.0.so.0 	  libgdk-x11-2.0.so.0 	 libatk-1.0.so.0
  libgdk_pixbuf-2.0.so.0  libm.so.6    	         libpangoxft-1.0.so.0
  libpangox-1.0.so.0 	  libpangoft2-1.0.so.0 	 libpango-1.0.so.0
  libgobject-2.0.so.0 	  libgmodule-2.0.so.0 	 libdl.so.2
  libglib-2.0.so.0 	  libc.so.6       	 libX11.so.6
  libXrandr.so.2  	  libXi.so.6      	 libXinerama.so.1
  libXft.so.2     	  libfreetype.so.6  	 libfontconfig.so.1
  libXfixes.so.3  	  libXcursor.so.1 	 libXrender.so.1
  libXext.so.6    	  /lib/ld-linux.so.2  	 libz.so.1
  libexpat.so.0

The 4.2.0 distributions were developed and tested on a Slackware 10.1 system using glib-2.6.1, Gtk+2.6.1, pango-1.8.0, atk-1.9.0, and so forth. The shared library executables have these dependencies:

  libgtk-x11-2.0.so.0     libgdk-x11-2.0.so.0    libatk-1.0.so.0
  libgdk_pixbuf-2.0.so.0  libm.so.6              libpangoxft-1.0.so.0
  libpangox-1.0.so.0      libpango-1.0.so.0      libgobject-2.0.so.0
  libgmodule-2.0.so.0     libdl.so.2             libglib-2.0.so.0
  libc.so.6               libX11.so.6            libXrandr.so.2
  libXi.so.6              libXinerama.so.1       libXft.so.2
  libfreetype.so.6        libfontconfig.so.1     libXfixes.so.3
  libXcursor.so.1         libXrender.so.1        libXext.so.6
  /lib/ld-linux.so.2      libpangoft2-1.0.so.0   libexpat.so.0
  libz.so.1

The 4.0.1 distributions were developed and tested on a RedHat 6.1 system using glib-1.2.8 and Gtk+1.2.8. The shared library executables have these dependencies:

   libgtk-1.2.so.0      libgdk-1.2.so.0    libgmodule-1.2.so.0
   libglib-1.2.so.0     libdl.so.2         libXext.so.6
   libX11.so.6          libm.so.6          libc.so.6
   /lib/ld-linux.so.2

The 4.1.1 distributions were developed and tested on a Slackware 8.1.1 system using glib 2.2.3, atk-1.2.4, pango 1.2.5, and gtk+-2.2.4, which were the latest versions available on the GTK web site at the time the archives were created (and not the versions that came with Slackware 8.1.1). The shared library executables have these dependencies:

   libgtk-x11-2.0.so.0     libgdk-x11-2.0.so.0    libatk-1.0.so.0
   libgdk_pixbuf-2.0.so.0  libm.so.6              libpangox-1.0.so.0
   libpango-1.0.so.0       libgobject-2.0.so.0    libgmodule-2.0.so.0
   libdl.so.2              libglib-2.0.so.0       libc.so.6
   libX11.so.6             libXext.so.6           /lib/ld-linux.so.2

The 4.1.0 distributions were developed and tested on a Slackware 8.1.1 system using glib 2.2.2, atk-1.3.6, pango 1.2.3, and gtk+-2.2.2; other packages that were required for the development included pkgconfig-0.14.0, libpng-1.2.5, and jpegsrc.v6b. The shared library executables have these dependencies:

   libgtk-x11-2.0.so.0   libgdk-x11-2.0.so.0      libXext.so.6
   libatk-1.0.so.0       libgdk_pixbuf-2.0.so.0   libm.so.6
   libpangox-1.0.so.0    libX11.so.6              libpango-1.0.so.0
   libgobject-2.0.so.0   libgmodule-2.0.so.0      libdl.so.2
   libglib-2.0.so.0      libc.so.6                /lib/ld-linux.so.2

The 4.0.1 distributions were developed and tested on a RedHat 6.1 system using glib-1.2.8 and Gtk+1.2.8. The shared library executables have these dependencies:

   libgtk-1.2.so.0      libgdk-1.2.so.0    libgmodule-1.2.so.0
   libglib-1.2.so.0     libdl.so.2         libXext.so.6
   libX11.so.6          libm.so.6          libc.so.6
   /lib/ld-linux.so.2

Downloading

Since the currently available versions of 'cpt4' are nearly indistinguishable from the user's point of view, your best bet is probably to use the source distribution that was developed with libraries closest to those on your system. If you have the binary versions of the libraries but not the developer versions installed, try the closest shared binary distribution; and if you have none of the libraries and an older system, you might try the static distribution.

     Compiled using glib-2.6.6, pango-1.8.2, atk-1.9.1, and gtk+2.6.10:
     cpt-4.2.0-1-linux-x86-shared.tgz (55 KB): shared lib executables
     Developed using glib-2.6.1, pango-1.8.0, atk-1.9.0, and gtk+2.6.1:
     cpt-4.2.0-linux-x86-source.tgz (60 KB): 'C' source and build files
     cpt-4.2.0-linux-x86-shared.tgz (58 KB): shared lib executables
     Developed using glib-2.2.3, pango-1.2.5, atk-1.2.4, and gtk+-2.2.4:
     cpt-4.1.1-linux-x86-source.tgz (59 KB): 'C' source and build files
     cpt-4.1.1-linux-x86-shared.tgz (60 KB): shared lib executables
     Developed using glib 2.2.2, pango 1.2.3, atk-1.3.6, and gtk+-2.2.2:
     cpt-4.1.0-linux-x86-source.tgz (58 KB): 'C' source and build files
     cpt-4.1.0-linux-x86-shared.tgz (59 KB): shared lib executables
     Developed using glib 1.2.8 and gtk+-1.2.8:
     cpt-4.0.1-linux-x86-source.tgz (53 KB): 'C' source and build files
     cpt-4.0.1-linux-x86-shared.tgz (58 KB): shared lib executables
     cpt-4.0.1s-linux-x86-static.tgz (792 KB): stripped statically linked executables

Installing / Building / Running

License

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version.

Acknowledgments

The automatic solution algorithm used in CPT was devised by George W. Hart and described in his article "To Decode Short Cryptograms", Communications of ACM, September, 1994. In this version of CPT, the solution algorithm is packaged as a separate executable, the 'C' code for which is largely an adaptation of the public domain demonstration program posted by Dr. Hart on his web site.

Author

Cryptogram Puzzle Tool was designed by Jeff Edwards, lge.aka.jeff@gmail.com. Comments, questions, and suggestions are always welcome.