Bits of tinkering
authorNeil Smith <neil.git@njae.me.uk>
Wed, 23 Jul 2014 11:46:41 +0000 (12:46 +0100)
committerNeil Smith <neil.git@njae.me.uk>
Wed, 23 Jul 2014 11:46:41 +0000 (12:46 +0100)
2013/solutions.txt
cipher.py
norms.py
slides/caesar-break.html

index fbf7502f1351a20e582db82b49c79ad2cc692f62..23c8cb2705d51e429f4da411cef24ad59d19e9b5 100644 (file)
@@ -13,8 +13,8 @@ c5a = open('2013/5a.ciphertext').read()
 c5b = open('2013/5b.ciphertext').read()
 c6a = open('2013/6a.ciphertext').read()
 c6b = open('2013/6b.ciphertext').read()
-c7a = open('2013/6a.ciphertext').read()
-c7b = open('2013/6b.ciphertext').read()
+c7a = open('2013/7a.ciphertext').read()
+c7b = open('2013/7b.ciphertext').read()
 
 p1a = caesar_decipher(c1a, 8)
 p1b = caesar_decipher(c1b, 14)
index 713db294846eece6c2ae72c9d1cfc5502836132f..b53ae24184d09ba2b6bcf304c0de8a2f0077f318 100644 (file)
--- a/cipher.py
+++ b/cipher.py
@@ -212,7 +212,7 @@ def affine_decipher_letter(letter, multiplier=1, adder=0, one_based=True):
         if one_based: cipher_number += 1
         plaintext_number = ( 
             modular_division_table[multiplier]
-                                  [(cipher_number - adder) % 26] )
+                                  [(cipher_number - adder) % 26])
         if one_based: plaintext_number -= 1
         return chr(plaintext_number % 26 + alphabet_start) 
     else:
@@ -566,7 +566,7 @@ class PocketEnigma(object):
         >>> pe.validate_wheel_spec([])
         Traceback (most recent call last):
             ...
-        ValueError: Wheel specification has 0 pairs, require 13
+        ValueError: Wheel specification has 0 pairs, requires 13
         >>> pe.validate_wheel_spec([('a', 'b', 'c')]*13)
         Traceback (most recent call last):
             ...
index b8e4bf1ef82c8b8ea6f85c0e3c3597d90b7d9b8b..66452940c376658e446bb704c7198ee1ace2be22 100644 (file)
--- a/norms.py
+++ b/norms.py
@@ -13,7 +13,7 @@ def normalise(frequencies):
     >>> sorted(normalise({1: 1, 2: 2, 3: 1}).items())
     [(1, 0.25), (2, 0.5), (3, 0.25)]
     """
-    length = sum([f for f in frequencies.values()])
+    length = sum(f for f in frequencies.values())
     return collections.defaultdict(int, ((k, v / length) 
         for (k, v) in frequencies.items()))
 
index 879244624f8a5e210c3495ee12794a1ae321d479..090c43f9147340b37e2f6e11ef213c93a1320a39 100644 (file)
@@ -207,6 +207,8 @@ Text encodings will bite you when you least expect it.
 # Five minutes on StackOverflow later...
 
 ```python
+import unicodedata
+
 def unaccent(text):
     """Remove all accents from letters. 
     It does this by converting the unicode string to decomposed compatibility