You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

47 lines
1.4 KiB

#!/usr/bin/env python3
import sys
def search_num(d, val):
for k,v in d.items():
if val == v:
return str(k)
def decode(inp, out):
nums = {}
for i in sorted(inp, key=len):
if len(i) == 2: nums[1] = set(i)
elif len(i) == 3: nums[7] = set(i)
elif len(i) == 4: nums[4] = set(i)
elif len(i) == 5: #2, 3, 5
if nums[1] <= set(i): nums[3] = set(i)
elif len(i) == 6: #0, 6, 9
if nums[4] <= set(i): nums[9] = set(i)
elif nums[1] <= set(i): nums[0] = set(i)
else: nums[6] = set(i)
elif len(i) == 7: nums[8] = set(i)
for i in inp:
if set(i) not in nums.values():
if set(i) <= nums[6]: nums[5] = set(i)
else: nums[2] = set(i)
return int(''.join([search_num(nums, set(o)) for o in out]))
if __name__ == '__main__':
lines = open(sys.argv[1]).read().strip('\n\n').split('\n') # or split \n\n or sth similar
inp = [i.split(' | ') for i in lines]
inout = [(i[0].split(' '), i[1].split(' ')) for i in inp]
# challenge 1
sums = 0
for _,out in inout:
for o in out:
if len(o) == 2 or len(o) == 3 or len(o) == 4 or len(o) == 7:
sums += 1
res1 = str(sums)
print("challenge 1:" +"\n" + res1 + "\n")
# challenge 2
res2 = str(sum([decode(i,o) for i,o in inout]))
print("challenge 2:" +"\n" + res2 + "\n")