Merge branch 'presentation-slides' of github.com:NeilNjae/cipher-training into presen...
authorNeil Smith <neil.git@njae.me.uk>
Wed, 26 Mar 2014 16:49:16 +0000 (16:49 +0000)
committerNeil Smith <neil.git@njae.me.uk>
Wed, 26 Mar 2014 16:49:16 +0000 (16:49 +0000)
1  2 
slides/caesar-break.html

diff --combined slides/caesar-break.html
index 9aea6810e8f371f4aaf313bb2b9f4998dcab50e3,c2556cf234bf61fe800836b70528ad93d5c005f3..15607e7665005c39396e342951187c35000bbb75
@@@ -197,9 -197,9 +197,9 @@@ def unaccent(text)
  # Find the frequencies of letters in English
  
  1. Read from `shakespeare.txt`, `sherlock-holmes.txt`, and `war-and-peace.txt`.
 -2. Find the frequencies
 -3. Sort by count (`sorted(, key=)` ; `.items()`, `.keys()`, `.values()`, `.get()`)
 -4. Write counts to `count_1l.txt` 
 +2. Find the frequencies (`.update()`)
 +3. Sort by count 
 +4. Write counts to `count_1l.txt` (`'text{}\n'.format()`)
  
  ---
  
@@@ -314,6 -314,39 +314,39 @@@ We also need a way of passing the diffe
  
  Try them all on random ciphertexts, see which one works best.
  
+ ---
+ # Reading letter probabilities
+ 1. Load the file `count_1l.txt` into a dict, with letters as keys.
+ 2. Normalise the counts (components of vector sum to 1): `$$ \hat{\mathbf{x}} = \frac{\mathbf{x}}{\| \mathbf{x} \|} = \frac{\mathbf{x}}{ \mathbf{x}_1 + \mathbf{x}_2 + \mathbf{x}_3 + \dots }$$`
+     * Return a new dict
+     * Remember the doctest!
+ 3. Create a dict `Pl` that gives the log probability of a letter
+ 4. Create a function `Pletters` that gives the probability of an iterable of letters
+     * What preconditions should this function have?
+     * Remember the doctest!
+ ---
+ # Breaking caesar ciphers (at last!)
+ ## Remember the basic idea
+ ```
+ for each key:
+     decipher with this key
+     how close is it to English?
+     remember the best key
+ ```
+ Try it on the text in `2013/1a.ciphertext`. Does it work?
+ ---
  
      </textarea>
      <script src="http://gnab.github.io/remark/downloads/remark-0.6.0.min.js" type="text/javascript">