-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathd25.py
51 lines (43 loc) · 798 Bytes
/
d25.py
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
38
39
40
41
42
43
44
45
46
47
48
49
50
data = [x.strip('\n') for x in open("i25.txt").readlines()]
# data = [x.strip('\n') for x in open("t25.txt").readlines()]
A = {
'=' : -2,
'-' : -1,
'0' : 0,
'1' : 1,
'2' : 2,
}
B = {
-2: '=',
-1: '-',
0: '0',
1: '1',
2: '2',
}
def fromSNAFU(x):
y = 0
for a,b in enumerate(x):
y *= 5
y += A[b]
return y
s = 0
for l in data:
s += fromSNAFU(l)
def toSNAFU(x):
l = []
reminder = 0
while x > 0:
a = x // 5
b = (x % 5) + reminder
if b > 2:
reminder = 1
b -= 5
else:
reminder = 0
l.append(b)
x = a
if reminder > 0:
l.append(reminder)
r = ''.join(map(lambda x: B[x],reversed(l)))
return r
print(toSNAFU(s))