From: Neil Smith Date: Mon, 18 Nov 2013 14:40:09 +0000 (+0000) Subject: Column transposition working, needs more tests X-Git-Url: https://git.njae.me.uk/?a=commitdiff_plain;h=f26a7febfe937c66babfe403289c8463e2fdfc88;p=cipher-tools.git Column transposition working, needs more tests --- diff --git a/cipher.py b/cipher.py index d857e04..7d3ba78 100644 --- a/cipher.py +++ b/cipher.py @@ -420,6 +420,10 @@ def scytale_decipher(message, rows): def transpositions_of(keyword): + """ + >>> transpositions_of('clever') + [0, 2, 1, 4, 3] + """ transpositions = [] key = deduplicate(keyword) for l in sorted(key): @@ -427,10 +431,25 @@ def transpositions_of(keyword): return transpositions def column_transposition_encipher(message, keyword): + """ + >>> column_transposition_encipher('hellothere', 'clever') + 'hleolteher' + """ transpositions = transpositions_of(keyword) - rows = every_nth(message, len(transpositions), fillvalue=' ') - transposed_rows = [transpose(row, transpositions) for row in rows] - return combine_every_nth(transposed_rows) + columns = every_nth(message, len(transpositions), fillvalue=' ') + transposed_columns = transpose(columns, transpositions) + return combine_every_nth(transposed_columns) + +def column_transposition_decipher(message, keyword): + """ + >>> column_transposition_decipher('hleolteher', 'clever') + 'hellothere' + """ + transpositions = transpositions_of(keyword) + columns = every_nth(message, len(transpositions), fillvalue=' ') + transposed_columns = untranspose(columns, transpositions) + return combine_every_nth(transposed_columns) + def caesar_break(message,