projects
/
cipher-tools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Split each cipher into its own file
[cipher-tools.git]
/
column_transposition.py
diff --git
a/column_transposition.py
b/column_transposition.py
index ecef3319f1594b0bf37253909a45b35e6068ab96..a141ff2c1f8fcc263a43884f307bfdb3f8003d8a 100644
(file)
--- a/
column_transposition.py
+++ b/
column_transposition.py
@@
-1,6
+1,7
@@
from utilities import *
from language_models import *
from utilities import *
from language_models import *
-from multiprocessing import Pool
+import multiprocessing
+from itertools import chain
from logger import logger
from logger import logger
@@
-26,6
+27,12
@@
def transpositions_of(keyword):
transpositions = tuple(key.index(l) for l in sorted(key))
return transpositions
transpositions = tuple(key.index(l) for l in sorted(key))
return transpositions
+
+transpositions = collections.defaultdict(list)
+for word in keywords:
+ transpositions[transpositions_of(word)] += [word]
+
+
def pad(message_len, group_len, fillvalue):
padding_length = group_len - message_len % group_len
if padding_length == group_len: padding_length = 0
def pad(message_len, group_len, fillvalue):
padding_length = group_len - message_len % group_len
if padding_length == group_len: padding_length = 0
@@
-197,7
+204,7
@@
def column_transposition_break_mp(message, translist=transpositions,
fitness=Ptrigrams) # doctest: +ELLIPSIS
(((2, 0, 5, 3, 1, 4, 6), False, False), -997.0129085...)
"""
fitness=Ptrigrams) # doctest: +ELLIPSIS
(((2, 0, 5, 3, 1, 4, 6), False, False), -997.0129085...)
"""
- with Pool() as pool:
+ with
multiprocessing.
Pool() as pool:
helper_args = [(message, trans, fillcolumnwise, emptycolumnwise,
fitness)
for trans in translist
helper_args = [(message, trans, fillcolumnwise, emptycolumnwise,
fitness)
for trans in translist
@@
-260,3
+267,5
@@
def scytale_break_mp(message, max_key_length=20,
return math.trunc(len(message) / len(best[0][0])), best[1]
scytale_break = scytale_break_mp
return math.trunc(len(message) / len(best[0][0])), best[1]
scytale_break = scytale_break_mp
+if __name__ == "__main__":
+ import doctest
\ No newline at end of file