| @@ -0,0 +1,29 @@ | |||
| def decode(string, swap={'1': 1, '=': -2, '-': -1, '0': 0, '2': 2}): | |||
| return sum(5 ** i * swap[c] for i, c in enumerate(string[::-1])) | |||
| def base5(n): | |||
| ns = [] | |||
| while n: | |||
| ns.append(n % 5) | |||
| n //= 5 | |||
| return ns[::-1] | |||
| def encode(n, swap={1: '1', -2: '=', -1: '-', 0: '0', 2: '2'}): | |||
| ms = [] | |||
| carry = 0 | |||
| for n in base5(n)[::-1]: | |||
| n += carry | |||
| if n > 2: | |||
| carry, value = 1, n % 3 - 2 | |||
| else: | |||
| carry, value = 0, n | |||
| ms.append(swap[value]) | |||
| if carry: | |||
| ms.append(swap[carry]) | |||
| return ''.join(ms[::-1]) | |||
| n = sum(map(decode, open(0).read().splitlines())) | |||
| print(encode(n)) | |||