Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def snafu_to_dec(num):
- result = 0
- for i in range(len(num)):
- char = num[-i-1]
- if char == '-':
- modifier = -1
- elif char == '=':
- modifier = -2
- else:
- modifier = int(char)
- result += (modifier * 5**i)
- return result
- def dec_to_snafu(num):
- def get_leading_digits(n):
- k = 0
- while 5**(k+1) <= n:
- k += 1
- m = n // 5**k
- if m in (1, 2):
- return [(k, str(m))], n - m*5**k
- elif m == 3:
- return [(k+1, "1"), (k, "=")], n - m*5**k
- elif m == 4:
- return [(k+1, "1"), (k, "-")], n - m*5**k
- temp = num
- digits = []
- while temp != 0:
- new_digits, temp = get_leading_digits(temp)
- digits += new_digits
- print(digits)
- l = ['0' for _ in range(digits[0][0]+1)]
- for k, char in digits:
- l[-k-1] = char
- return ''.join(l)
- total = 0
- with open('input', 'r') as f:
- for line in f.readlines():
- total += snafu_to_dec(line.strip())
- print(total)
- dec_to_snafu(total)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement