home *** CD-ROM | disk | FTP | other *** search
- CRYPTOSOLVE VERSION 1.5
- Copyright 1996-1998 James A. Parsly
-
-
- CRYPTOSOLVE is a WINDOWS based cryptogram solving utility. At its
- most basic level it allows you to type in a cryptogram and handles
- the chore of letter substitution for you. However, the real point
- of the program is the underlying expert system that provides hints
- and can even make a stab at automatic solution.
-
- New features in this version:
-
- Several hundred new rules.
- Improvements to the user interface.
- More control over filtering.
-
- Check out my web site for the latest links and program updates:
-
- http://www.public.usit.net/jparsly/
-
- --------------------------------------------------------------------
- SYSTEM REQUIREMENTS
-
- This program requires Microsoft Windows
-
- If you plan to use the Hints at all, I recommend at least a
- 486-66. A Pentium is even better.
- --------------------------------------------------------------------
-
- INSTALLATION:
-
- If you downloaded CRYPTOSOLVE, it probably came in the form of
- a .ZIP file, CSOLVE15.ZIP. Use PKUNZIP to Un-ZIP the files onto
- a floppy disk. Get into WINDOWS and from the Program Manager
- menu select FILE and then RUN. In the Command Line box enter
- A:\SETUP or B:\SETUP and then click OK. This should install
- CRYPTOSOLVE and create a group containing the CRYPTOSOLVE icon.
-
- FILE LIST:
-
- A complete installation of CRYPTOSOLVE includes the following
- files:
-
- CSOLVE.EXE
- CSOLVE.INI
- VBRUN300.DLL Required for Visual Basic. Goes in WINDOWS/SYSTEM
- THREED.VBX Required for Visual Basic. Goes in WINDOWS/SYSTEM
- PATT.DAT Pattern database
- PATT2.DAT Rule database
- WORDLIST.* Word counts for various word lengths
- README.TXT This file
- REGISTER.TXT Registration form
-
- This is the complete version of CRYPTOSOLVE and is not crippled in
- any way.
-
- ---------------------------------------------------------------------
- REGISTRATION
-
- It costs $10 US Dollars to register. This gives you the right to
- complain and make suggestions. See REGISTER.TXT. My address is
- also given at the end of this document.
-
- ---------------------------------------------------------------------
-
- How CRYPTOSOLVE works (and why it sometimes doesn't)
-
- CRYPTOSOLVE's hint system is based on patterns and rules. It uses
- the patterns and rules to identify individual words (or author names).
- Each pattern or rule maps to a particular word, so CRYPTOSOLVE cannot
- directly identify any word that doesn't already have a pattern or
- rule in the database. To fill in "unknown" words the letters must
- be cross-referenced in "known" words.
-
- This means that a cryptogram containing a large number of "unknown"
- words will be difficult for CRYPTOSOLVE to solve. Someone suggested
- that I type in part of Jabberwocky (a nonsense poem: "TWAS BRILLIG
- AND THE SLITHEY TOVES....") and of course the hint system was
- pretty much a complete failure.
-
- When you start a new puzzle and don't know any of the solution yet,
- there are often many candidates for each word in the puzzle.
- CRYPTOSOLVE ranks the candidates based on historical frequency of
- occurrance. Suppose the puzzle contained the word "XABZZQ". Two
- words that would fit, all other things being equal, are "JOHNNY" and
- "REALLY". CRYPTOSOLVE knows that REALLY is about 6 times as likely
- to occur as JOHNNY and so the autosolver is more likely to come up
- with X=R than it is to come up with X=J. If the X=R is wrong and
- X=J is right, then the autosolver will fail.
-
- I have been training the expert system for about 6 years (1
- cryptogram per day) and there are over 10000 rules in the system.
- The cryptograms I have been using are quotations, so the rules
- reflect word usage in ordinary speech and writing.
-
- Cryptograms that are purposely designed to be difficult by use
- of uncommon words are going to give the autosolver problems.
-
- Given all that here is how you use the CRYPTOSOLVE hint system:
-
- ---------------------------------------------------------------------
-
- SOLVING A PUZZLE USING THE HINTS SYSTEM
-
- If you are given a starting letter, click the letter tile
- corresponding to the puzzle letter and then click the solution letter.
-
- Bring up the HINTS page by clicking the HINTS button.
-
- Search for PATTERNS by clicking the PATTERNS button. PATTERNS are
- word or author names that can be recognized because they contain
- patterns of repeated letters. A common pattern would be WXYWZX
- which usually is the word PEOPLE. If any patterns are found a
- list will appear. You can single click a candidate to see how it
- looks in the puzzle. If a candidate looks good to you, either
- double click the candidate or hit the accept button.
-
- If you find acceptable patterns, then try the RULES button
- to see if there are any exact matches in the RULES database.
- RULES will not work if there are no known letters. Actually you
- need to have enough known letters to match a rule in the rule
- database, so you usually need more than one known letter.
-
- A rule tells CRYPTOSOLVE how to infer unknown letters in a word
- based on known letters. For example, if you have the puzzle word
- "XYZX" and you know that Y=H and Z=A, then the rule "_HA_=THAT"
- tells you that X=T. RULES will not work unless you know one or
- more letters in the puzzle, and even if you do there still may be
- no matches with the DATABASE. If matches are found, a list will
- appear showing candidates which you can try out and accept by
- clicking and doubleclicking, respectively.
-
- The next step is to try for a statistical solution using the
- AUTOSOLVE method. This works by examining multiple puzzle words.
- For each puzzle word examined, all possible solution words from
- the rule database are found. Some candidates are eliminated by
- looking at what would happen in cross-referenced words (for example
- if the solution would create a cross-referenced word that didn't
- have any vowels in it). Remaining candidates are assigned weights
- based on historical frequency of occurrance and on how closely the
- rule that produced the candidate was met (Buzz word: fuzzy logic).
- The candidate is then broken down into letters and statistics are
- kept on the total weight counts for all possible puzzle letter/
- solution letter pairs. When all of the words have been factored in,
- letters that get 80% or more of the total weight for a given
- puzzle letter are incorporated into the solution.
-
- AUTOSOLVE can then perform another iteration taking into account
- any new letters in the solution. You keep running iterations until
- no more progress is made. Rather than proceed automatically
- to a new iteration, CRYPTOSOLVE requires you to hit the GO button.
- This gives you a chance to SET or EXCLUDE letters before proceeding.
- The SET box allows you to enter a puzzle letter/solution letter
- pair that you have figured out. The EXCLUDE box is used to inform
- CRYPTOSOLVE that a puzzle letter/solution letter is not possible.
- This is useful when the autosolver assigns a letter based on a
- high probability that is nevertheless incorrect. You must exclude
- the puzzle letter/solution letter pairing to override the
- probability and allow assignment of a different letter.
-
- The PATTERNS-->RULES-->AUTOSOLVE method doesn't usually require
- much input from you, except to click the buttons. I was curious to
- see how well the program would do on its own, so I bought a puzzle
- book and tried out 40 cryptograms. Using just the 3 steps,
- CRYPTOSOLVE was able to solve 25 out of the 40. I considered a
- puzzle solved if I could tell what the solution was, even if one or
- two letters weren't filled in. (This happens where there are 2 or
- more candidates for a letter and none have enough weight to be
- included in the solution; for example you can't decide if _E is
- WE, ME, BE, etc. if there are no cross-referenced words to factor
- into the decision.) It actually did better on the first puzzles,
- solving 23 out of 30, but the last 10 were more difficult puzzles
- that didn't use common words. On its usual diet of quotations
- which are not purposely designed to be difficult, I am sure
- CRYPTOSOLVE does at least as well as the 23/30 figure.
-
- I was actually able to solve the remainder of the puzzles (except for
- the 40th "CHALLENGER" puzzle which turned out to be mostly
- unfamiliar words), just not automatically. How? See below.
-
- So what do you do if the AUTOSOLVE method doesn't work? This is where
- you come in. The POSSIBILITIES method allows you to doubleclick a
- puzzle word and look at candidates, sorted by probability.
- Once again you are presented with a list and you can single click
- a candidate to see how it looks in the puzzle. If you like a
- candidate, double click it (or hit the ACCEPT button). You can
- then go back to RULES or AUTOSOLVE and see what you get.
- If you click the multilevel check box, you can click two or more
- words and get pairs, triplets, etc. of words that will work
- simultaneously in the puzzle. At each level of the multilevel
- search, up to 500 candidate words are considered and up to
- 2500 multiple word sets are saved. You should pick words
- you click carefully or the number of candidates will overwhelm
- this method. Don't start with 4, 5 or 6 letter words that
- have no repeated letters. Start with longer words or words
- that have repeated letters. Also if one of the words picked
- is not already in the dictionary, this method will fail.
-
- FILTERING
-
- FILTERING is used to reduce the number of candidates for puzzle words
- in the AUTOSOLVE and POSSIBILITIES methods. Most of the filtering
- is automatic, although there is a VOWEL/CONSONANT filter that you
- can control in the possibilities method. Here are some of the
- filtering techniques:
-
- Candidate words must match known letters. This would seem pretty
- obvious, but I have seen a program (CRYPTO95) that doesn't take
- known letters into account in its possibilities method.
-
- Candidate words must not re-use letters already used in other words. Ditto.
-
- Puzzle letters must not map to themselves. This sometimes happens, although
- I consider it to be "bad form". You can turn off this assumption using
- the filters menu.
-
- Any letter occurring elsewhere in the puzzle as a 1 letter word
- (except in the AUTHOR box) will be assumed to map to an A or an I. This
- will sometimes backfire when a proper name (with middle initial) occurs
- in the body of the puzzle. Once again, you can turn this off from the
- filters menu.
-
- Certain pairs of letters don't occur next to each other. Additional
- pairs of letters don't ever occur at the beginning or words, and
- some pairs never occur at the end of words. If letters from a candidate
- word occur in other puzzle words, see if these letters would create
- an invalid letter pair. If so, the candidate is eliminated.
-
- The number of two and three letter words is a reasonably small set.
- If letters from a candidate word occur in 2 or 3 letter words elsewhere
- in the puzzle, there must be a 2 or 3 letter word that can be formed
- using the letters from the candidate word.
-
-
-
- The other way that you interact with the program is by entering
- new rules and patterns. As you work puzzles you will come across
- new words and author names that contain patterns that will be
- recognizable in future puzzles. I usually want at least two
- sets of repeated letters before I consider a pattern to be
- unique enough to be included in the PATTERN database. This is
- entirely up to you. Similarly, as you look at partial solutions
- you will see opportunities for new inference rules. The hint
- pages all have a ADD NEW RULES button that pops up a form
- for entering RULES and PATTERNS. This is your chance to make
- the program smarter, to be the expert behind the expert system,
- so USE IT!
-
- Patterns are just words and author names. If you think that the name
- RONALD REAGAN has enough pattern to be identified in the future, RONALD REAGAN
- is what you enter. You can look at the pattern database. It is stored
- as a standard text file called PATT.DAT.
-
- Rules are a bit more complicated. There are two distinct formats. The
- first type of rule is used when the known letters in a word allow you
- to infer the unknown letters. The left-hand side of the rule shows
- the letters that must be known and uses the underscore character "_"
- in positions that are unknown. The rule then has an equal sign "="
- and a right-hand side which must be just like the left-hand side, except
- that the "_" characters are replaced by the correct letters. Examples
- of this type of rule:
-
- _HA_=THAT
- CO__ITT__=COMMITTEE
- V_C__M=VACUUM
-
- The second format of rule is used when there is only one unknown
- letter left in a word, but there are multiple letters that would fit.
- The left-hand side of this type of rule gives the known letters and
- an "_" character in the position where the unknown letter will go.
- The rule then has a "*" character followed by all of the possible
- letters. Examples of this type of rule:
-
- _F*IO
- GOA_*DLT
-
- You can look at the RULE database. It is stored in the text file
- PATT2.DAT
- ------------------------------------------------------------------------------------------
- WORD COUNTS
-
- When you have completely solved a puzzle, you should click the
- WORD COUNT button so that the program will update the frequency of
- occurrances. This will automatically happen if you try to exit the
- program after solving a puzzle. You will see a list of all of the
- words in the puzzle. If NEW WORD appears beside a word, this
- word is being seen for the first time. It is important that you
- create RULES or PATTERNS for any new words. AUTOSOLVE gets candidate
- words using the rule database, so if there is no rule for a word,
- AUTOSOLVE will not consider it. The WORD COUNT feature was the last
- major feature added to the original DOS program, so the word counts
- are still a bit low.
-
- ------------------------------------------------------------------------------------------
- If Wishes were Fishes......
-
- I wish that the program were faster. The original DOS version
- which was written in compiled QuickBasic 4.0 is MUCH faster than
- the VISUAL BASIC for Windows code. Didn't have a very good user
- user interface, but it did the job. Of course the machines keep
- getting faster and I hear rumors about there being REAL compiled
- code (as opposed to p-code) in a future version of Visual Basic,
- so maybe time will solve all of my problems. Either that or I get
- a C Compiler and start writing DLL's (or maybe that new POWERBASIC
- compiler).
-
- The Visual Basic 5 compiler is out now, but I don't have one yet.
- I have great hopes for this, and I plan to get one soon.
-
- ------------------------------------------------------------------------------------------
- The ABOUT Screen
-
- View the ABOUT screen and be amazed! I am rather proud of it.
-
- ------------------------------------------------------------------------------------------
- Any Problems? Contact:
- James A. Parsly
- jparsly@usit.net
- 423-966-4131
- 624 Summit Lake Court
- Knoxville TN 37922
-