from tools.aoc import AOCDay from typing import Any def int2snafu(dec: int) -> str: conv = "012=-0" snafu = "" power = 1 over = 0 while dec > 0: c = dec % (5 ** power) + over dec //= 5 if c > 2: over = 1 else: over = 0 snafu = conv[c] + snafu return snafu def snafu2int(snafu: str) -> int: dec = 0 for i, c in enumerate(snafu): if c == '-': val = -1 elif c == '=': val = -2 else: val = int(c) dec += 5 ** (len(snafu) - i - 1) * val return dec class Day(AOCDay): inputs = [ [ ("2=-1=0", "input25_test"), ("2==221=-002=0-02-000", "input25"), ], [ (None, "input25"), ] ] def part1(self) -> Any: return int2snafu(sum(snafu2int(c) for c in self.getInput())) def part2(self) -> Any: return "" if __name__ == '__main__': day = Day(2022, 25) day.run(verbose=True)