Add ArithmeticCoder stub.
Add lowValue and highValue to ArithmeticCoder.
Add CharMap.
Add makeKey to ArithmeticCoder.
Reverse sort algorithm for CharMap.
This way, it will sort with the highest probability first, using fewer bits for higher probability characters.
Fix CharMap entriesSortedByValue() method.
Add ArithmeticCoder algorithm.
Remove the infinite recursion from CharMap.
Fix problems with CharMap.
Fix problem with encoding algorithm.
Compute highValue in ArithmeticCoder.
Write output for ArithmeticCoder.
Reduce output to working bits.
Change CharMap to use an Integer, not a Long.
Use a DataOutputStream for ArithmeticCoder output.
Print out the CharMap in ArithmeticCoder.
Import ByteArrayInputStream and DataInputStream.
Begin input for ArithmeticCoding's decode.
Read in BigInteger value from input.
Find length of message to get the max divisor.
We need the length to the power of the length minus 1. The length is calculated by the sum of the probabilities.