Files
python/exercises/practice/rail-fence-cipher/.meta/example.py

18 lines
494 B
Python
Raw Normal View History

from itertools import cycle, chain
def fence_pattern(rails, size):
zig_zag = cycle(chain(range(rails), range(rails - 2, 0, -1)))
return zip(zig_zag, range(size))
def encode(msg, rails):
fence = fence_pattern(rails, len(msg))
2021-11-23 14:05:17 +01:00
return ''.join(msg[idx] for _, idx in sorted(fence))
def decode(msg, rails):
fence = fence_pattern(rails, len(msg))
fence_msg = zip(msg, sorted(fence))
2021-11-23 14:05:17 +01:00
return ''.join(char for char, _ in sorted(fence_msg, key=lambda item: item[1][1]))