Add solution for day 8
This commit is contained in:
1 parent
f446d83318
commit
4805235f78
3 files changed
+379
No files matched your search
Executable
+47
@@ -0,0 +1,47 @@
|
||||
#!/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")
|
||||
|
||||
Reference in new issue
Block a user