-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathPC01.py
More file actions
37 lines (32 loc) · 1010 Bytes
/
PC01.py
File metadata and controls
37 lines (32 loc) · 1010 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
"""
Solution to mapping challenge at
http://www.pythonchallenge.com/pc/def/map.html
"""
def translate_data(data):
"""
Performs ROT2 (rotation by 2) transformation on all lower case ASCII characters
in data
"""
start_num = int.from_bytes(b'a', byteorder='big')
end_num = int.from_bytes(b'z', byteorder='big')
def rot2(input_data):
"""
Performs ROT2 (rotation by 2) transformation on a single lower case ASCII
character in input_data.
"""
if input_data < start_num:
return input_data
if input_data > end_num:
return input_data
result = input_data + 2
if result > end_num:
result += start_num - end_num - 1
return result
data_b = data.encode()
data_b = bytearray([rot2(x) for x in data_b])
data = data_b.decode()
print(data)
if __name__ == "__main__":
with open('data/data_01.txt', 'r') as f:
translate_data(f.read())
translate_data("map")