Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
Grilled solution in Clear category for Rotating Grille Cipher by veky
def grille_encrypt(plaintext: str, grille: list[str]) -> str|None:
it, result = iter(plaintext), []
for paper in range(0, len(plaintext), 4 ** 2):
sheet = [[None] * 4 for line in range(4)]
for pass_ in range(4):
for gline, sline in zip(grille, sheet, strict=True):
for i, gchar, schar in zip(range(4), gline, sline, strict=True):
if gchar == 'X':
if schar: return
else: sline[i] = next(it)
grille = [*zip(*reversed(grille), strict=True)]
for sline in sheet:
if None in sline: return
else: result.extend(sline)
return ''.join(result)
Dec. 16, 2021
Comments: