Skip to content

Commit 2ff8eb1

Browse files
committed
add a1z26 algorithm
1 parent b515155 commit 2ff8eb1

File tree

1 file changed

+32
-0
lines changed

1 file changed

+32
-0
lines changed

ciphers/a1z26.py

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
"""
2+
a1z26_encode('dori', 15) => [115, 126, 129, 120]
3+
a1z26_decode([115, 126, 129, 120], 15) => 'dori'
4+
complexity: O(n)
5+
"""
6+
7+
from typing import List
8+
9+
10+
def a1z26_encode(string: str, key: int) -> List[int]:
11+
result = []
12+
for letter in string:
13+
result.append(ord(letter) + abs(key))
14+
return result
15+
16+
17+
def a1z26_decode(encode_array: List[int], key: int) -> str:
18+
result = ''
19+
for element in encode_array:
20+
try:
21+
result += chr(element - abs(key))
22+
except ValueError:
23+
result += chr(element)
24+
return result
25+
26+
27+
if __name__ == '__main__':
28+
string_encode = a1z26_encode('mohammad dori', 8)
29+
print(string_encode)
30+
print(a1z26_decode(string_encode, 8))
31+
print(a1z26_encode('dori', 15) == [115, 126, 129, 120])
32+
print(a1z26_decode([115, 126, 129, 120], 15) == 'dori')

0 commit comments

Comments
 (0)