added day 08
This commit is contained in:
76
08/solve02.py
Normal file
76
08/solve02.py
Normal file
@ -0,0 +1,76 @@
|
||||
#!/usr/bin/python
|
||||
|
||||
import sys
|
||||
import re
|
||||
|
||||
dm = {
|
||||
0: 'abcefg',
|
||||
1: 'cf',
|
||||
2: 'acdeg',
|
||||
3: 'acdfg',
|
||||
4: 'bcdf',
|
||||
5: 'abdfg',
|
||||
6: 'abdefg',
|
||||
7: 'acf',
|
||||
8: 'abcdefg',
|
||||
9: 'abcdfg',
|
||||
|
||||
}
|
||||
count = 0
|
||||
|
||||
def intersect(a, b):
|
||||
if a is None:
|
||||
return 0
|
||||
if b is None:
|
||||
return 0
|
||||
res = set(a).intersection(b)
|
||||
return len(res)
|
||||
|
||||
def map_X(x, digits, result):
|
||||
if x in result:
|
||||
return result
|
||||
v = list(result.values())
|
||||
for i in digits:
|
||||
if i in v:
|
||||
continue
|
||||
if len(i) != len(dm[x]):
|
||||
continue
|
||||
#print("mapping %s for %s" % (x, i, ))
|
||||
i0 = []
|
||||
for (k,v) in result.items():
|
||||
i1 = intersect(dm[k], dm[x])
|
||||
i2 = intersect(v, i)
|
||||
i0.append(i1 == i2)
|
||||
#print(i0)
|
||||
if len(i0) == sum(i0):
|
||||
result[x] = i
|
||||
break
|
||||
return result
|
||||
|
||||
result = []
|
||||
with open("input01.txt","r") as f:
|
||||
for line in f:
|
||||
maps = dict()
|
||||
tokens = [''.join(sorted(x)) for x in line.strip().split(' ')]
|
||||
#tokens = line.strip().split(' ')
|
||||
|
||||
for _ in range(10):
|
||||
maps = map_X(1,tokens[0:10], maps)
|
||||
maps = map_X(4,tokens[0:10], maps)
|
||||
maps = map_X(7,tokens[0:10], maps)
|
||||
maps = map_X(8,tokens[0:10], maps)
|
||||
maps = map_X(9,tokens[0:10], maps)
|
||||
maps = map_X(6,tokens[0:10], maps)
|
||||
maps = map_X(0,tokens[0:10], maps)
|
||||
maps = map_X(2,tokens[0:10], maps)
|
||||
maps = map_X(3,tokens[0:10], maps)
|
||||
maps = map_X(5,tokens[0:10], maps)
|
||||
|
||||
maps_r = {v:k for (k,v) in maps.items()}
|
||||
|
||||
line_esult = ''
|
||||
for n in tokens[11:]:
|
||||
line_esult = line_esult + str(maps_r[n])
|
||||
result.append(int(line_esult))
|
||||
|
||||
print(sum(result))
|
||||
Reference in New Issue
Block a user