Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
First solution in Clear category for Cipher Map by klaganowski
def decode(map, sipher):
result = ''
rowpos = 0
for row in map:
linepos = 0
for letter in row:
if letter == 'X':
result += sipher[rowpos][linepos]
linepos += 1
rowpos += 1
return result
def rotate(map):
result = []
linepos = 0
for row in map:
rowpos = 3
newRow = ''
for letter in row:
newRow += map[rowpos][linepos]
rowpos -= 1
result.append(newRow)
linepos += 1
return result
def recall_password(cipher_grille, ciphered_password):
result = ''
map = cipher_grille
sipher = ciphered_password
for n in range(0, 4):
result += decode(map, sipher)
map = rotate(map)
return result
if __name__ == '__main__':
#These "asserts" using only for self-checking and not necessary for auto-testing
assert recall_password(
('X...',
'..X.',
'X..X',
'....'),
('itdf',
'gdce',
'aton',
'qrdi')) == 'icantforgetiddqd', 'First example'
assert recall_password(
('....',
'X..X',
'.X..',
'...X'),
('xhwc',
'rsqx',
'xqzz',
'fyzr')) == 'rxqrwsfzxqxzhczy', 'Second example'
Dec. 4, 2016