Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
I forgot about this one :) solution in Clear category for AMSCO Cipher by veky
from itertools import cycle, islice, zip_longest
def decode_amsco(message, key):
key, lenm, it = str(key), len(message), iter(message)
lens = {i: [start] for i, start in zip(key, cycle([1, 2]))}
total = sum(sum(lens.values(), []))
for column in map(lens.get, cycle(key)):
nextlen = min(lenm - total, 3 - column[~0])
if not nextlen: break
column.append(nextlen)
total += nextlen
seg = {i: [''.join(islice(it, lh)) for lh in lens[i]] for i in sorted(key)}
return ''.join(sum(zip_longest(*map(seg.get, key), fillvalue=''), ()))
June 22, 2018