#!/usr/bin/env python3 import sys import pathlib def read_input(): path = pathlib.Path(sys.argv[1]) if len(sys.argv) > 1 else pathlib.Path("input.txt") return path.read_text().rstrip("\n") def parse(data): return data.splitlines() def part1(data): sum = 0 for bank in data: bat = list(bank) large = sorted(bat[:-1])[-1] large_loc = bat.index(large) second = 0 for val in bat[large_loc+1:]: if int(val) >= int(second): second = val sum += int( str(abs(int(large))) + str(abs(int(second))) ) return sum def part2(data): s = 0 for bank in data: digits = [int(x) for x in bank] need = 12 remove = len(digits) - need stack = [] for d in digits: while stack and remove > 0 and stack[-1] < d: stack.pop() remove -= 1 stack.append(d) res = stack[:need] s += int(''.join(str(x) for x in res)) return s def main(): raw = read_input() data = parse(raw) r1 = part1(data) r2 = part2(data) print(r1) print(r2) if __name__ == "__main__": main()