ANS: You should use Sun's JDK 1.4. You should *not* use new Java language features that are present only in Java 1.5 beta. We will *not* be using a JDK 1.5 beta.
Where am I?
is allowable, and
Where am i?
is not?
ANS: Simple answer: No.
Complicated answer: Capitalization is sometimes good for clues, but it is not an iron-clad predictor of particular words. For example, consider the following sentence:
The letter 'i' is the ninth letter of the English alphabet.
Similarly, capitalization is sometimes used for emphasis:
Suddendly Maria yelled, "LOOK OUT! HE'S GOT A GUN!"
Once encrypted with a rotation or substitution cipher, the word "A" could
be represented by any capital letter. In this case, your program would be
wrong to assume that all one-letter capitalized words within a sentence
are encrypted versions of the word "I".In sum, your program should use rules that look at all the words in a sentence to judge whether or not a key is the right key. A good decryption program will inevitably need to deal with words that it doesn't recognize in any case; weird one-letter words are just a special case of those unrecognized words.
ANS: I'm not sure which machines we'll use, but they'll be reasonably fast. The best way to avoid problems with the time limit is to implement a fast search strategy, by using lots of information about English words in order to find the most likely ciphers quickly. A well-planned search might need several seconds on a difficult puzzle, but in general, a "smart" program on a relatively modern machine should not run anywhere close to the time limit.
ANS: No. Absolutely not! That would be plagiarism. You can search the web for ideas, and you may incorporate those ideas into your solution, but you must write your own code to do that.
ANS: No; you cannot assume that no letter will map to itself.
As described in the project details, we define that there are 26 unique rotation ciphers and 26! (26 factorial) unique substitution ciphers. These counts include ciphers in which some or all letters map to themselves.
ANS: Yes, you may have your program read an external dictionary file. If you do this, remember the following:
In sum, we do not recommend that you use an external dictionary file, but you may if you wish. If you do, be sure to keep the above points in mind.
ANS: Yes, you may do this, but we *seriously* advise against it for three reasons:
ANS: Yes.
ANS: It is hard to answer these questions precisely, but in sum: our "test set" will resemble the provided "practice set," but it will not be the same.
As described in the project details, some of the scoring will be based on your program's performance on selected examples from the practice set. We will also evaluate your program on cryptograms that are not in the practice set. Some of them will be short and some of them will be long. Some of them will be about subject areas like those in the test set, and some of them will not.
We will test your program on as many cryptograms as we can during the grading period. We cannot say exactly how many, but it won't be more than your program is required to be able to get through during the testing period (i.e., one puzzle every 30 seconds).
ANS: Thank you for reporting this! It was a bug: the cryptograms should contain ASCII characters only, and the cent sign is not an ASCII character. This was fixed in the March 9 version of the test suite.