#!/usr/bin/env python3 from functools import reduce from re import findall from copy import deepcopy import sys # import numpy as np filename = sys.argv[1] if len(sys.argv) == 2 \ else "in/" + sys.argv[0].split('/')[-1].rstrip(".py") + ".pzl" data = open(filename).read() lines = data.rstrip('\n').split('\n') # print(lines) res1 = 0 res2 = 0 def max1(arr): for n in reversed(range(0,100)): left = n // 10 right = n % 10 if left in arr[:-1]: if right in arr[arr.index(left)+1:]: return n assert False def max2(arr, rem): if rem == 1: return max(arr) rem -= 1 left = sorted(arr[:-rem], reverse=True)[0] right = arr[arr.index(left)+1:] return 10**rem*left + max2(right, rem) for line in lines: nums = [int(i) for i in line] res1 += max1(nums) res2 += max2(nums, 12) print('res1:', res1) print('res2:', res2)