Minor documentation updates
[szyfrow.git] / szyfrow / railfence.py
index e81b066809623dae8db28cd89d1e90132b122e83..741e3e2ad3d7bafddbb7d722c468c8103009cb4f 100644 (file)
@@ -1,3 +1,19 @@
+"""[Railfence transposition cipher](https://en.wikipedia.org/wiki/Rail_fence_cipher).
+
+Works by splitting the text into sections, then reading across them to
+generate the rows in the cipher. The rows are then combined to form the
+ciphertext.
+
+Example: the plaintext "hellotherefriends", with a height of four, written 
+out in the railfence as 
+   h h i
+   etere*
+   lorfns
+   l e d
+(with the * showing the one character to finish the last section). 
+Each 'section' is two columns, but unfolded. In the example, the first
+section is 'hellot'.
+"""
 import math
 from enum import Enum
 from itertools import starmap, zip_longest
@@ -128,19 +144,6 @@ def railfence_decipher(message, height, fillvalue=''):
     return cat(c for r in zip_longest(*(down_rows + up_rows), fillvalue='') for c in r)
 
 
-def railfence_break(message, max_key_length=20,
-                     fitness=Pletters, chunksize=500):
-    """Breaks a railfence cipher using a matrix of given rank and letter frequencies
-
-    
-    """
-    
-    sanitised_message = sanitise(message)
-    results = starmap(worker, [(sanitised_message, i, fitness)
-                               for i in range(2, max_key_length+1)])
-    return max(results, key=lambda k: k[1])
-
-
 def railfence_break(message, max_key_length=20,
                      fitness=Pbigrams, chunksize=500):
     """Breaks a railfence cipher using a range of lengths and