CIS 554 Scala 4: Caesar Cipher
Fall 2016, David Matuszek
Purposes of this assignment
- To give you an easy assignment over the Thanksgiving holiday.
- So that you don't forget all your Scala over the holiday
.
General idea
The Caesar cipher is one of the oldest encryption techniques, and
certainly one of the easiest to break.
The idea of a Caesar cipher is this: you encode a message by shifting
each letter some number of places. Thus, if the shift is 2, then A becomes
C, B becomes D, and so on. It is end around, so Y becomes A and Z becomes
B. Like this:

For an accurate Caesar cipher, we would discard all punctuation, and group
the text into blocks of five letters. We won't do that here; we will retain
all spacing and punctuation, and all capitalization. This will enable us to
decipher messages to get exactly the original message.
Details
Name your project Caesar, and your package cipher.
Create an object Cipher (in this assignment, you don't need
classes) containing at least the following two methods:
def encipher(shift: Int, plainText: String): String
- Enciphers the
message, using the shift.
Allow the shift to be any integer value; use the mod
operator to cut it down to a value between 0 and 25.
def decipher(cipheredText: String): (Int, String)
- Given any message enciphered using a Caesar cipher, decipher it and
return the
shift (0..25) that was used, and the deciphered
message.
You may provide a main method if you feel like it, but it isn't required.
Testing
Write unit tests for the above methods, and for any other I/O free methods
you write.
How to do it
A message will be correctly deciphered when it consists of mostly
English words. It doesn't have to be entirely English words-that's too
strict a test. The message may contain other things, such as the names of
people or places.
Remember that you used a very large list of English words in the Jotto
assignment.
Due date
Zip your Scala project and turn the zip file in to
Canvas. Due by 11:59pm
Tuesday, November 29.