Added Haskell Implementations and changed directory structure
This commit is contained in:
parent
9f40c27eb9
commit
cb9dee889b
14 changed files with 392 additions and 0 deletions
74
Python/2021/08/day8.py
Normal file
74
Python/2021/08/day8.py
Normal file
|
|
@ -0,0 +1,74 @@
|
|||
input = open("input.txt", 'r')
|
||||
|
||||
data = []
|
||||
|
||||
for line in input:
|
||||
data.append(list(line.strip().split(" ")))
|
||||
|
||||
letters = [set() for i in range(0, 10)]
|
||||
dataset = ['a','b','c','d','e','f','g']
|
||||
total = 0
|
||||
|
||||
for line in data:
|
||||
letters = [set() for i in range(0, 10)]
|
||||
for i in range(0, 10):
|
||||
entry = line[i]
|
||||
if len(entry) == 2:
|
||||
letters[1] = set([frozenset(entry)])
|
||||
elif len(entry) == 3:
|
||||
letters[7] = set([frozenset(entry)])
|
||||
elif len(entry) == 4:
|
||||
letters[4] = set([frozenset(entry)])
|
||||
elif len(entry) == 5:
|
||||
letters[2].update(set([frozenset(entry)]))
|
||||
letters[3].update(set([frozenset(entry)]))
|
||||
letters[5].update(set([frozenset(entry)]))
|
||||
elif len(entry) == 6:
|
||||
letters[0].update(set([frozenset(entry)]))
|
||||
letters[6].update(set([frozenset(entry)]))
|
||||
letters[9].update(set([frozenset(entry)]))
|
||||
elif len(entry) == 7:
|
||||
letters[8] = set([frozenset(entry)])
|
||||
cf = letters[1].pop()
|
||||
letters[1].add(cf)
|
||||
for st in letters[3]:
|
||||
if st.intersection(cf) == cf:
|
||||
letters[3] = set([st])
|
||||
letters[2].remove(st)
|
||||
letters[5].remove(st)
|
||||
|
||||
acf = letters[7].pop()
|
||||
letters[7].add(acf)
|
||||
for st in letters[6]:
|
||||
if st.intersection(acf) != acf:
|
||||
letters[6] = set([st])
|
||||
letters[0].remove(st)
|
||||
letters[9].remove(st)
|
||||
|
||||
abdefg = letters[6].pop()
|
||||
letters[6].add(abdefg)
|
||||
c = frozenset(dataset).difference(abdefg)
|
||||
for st in letters[2]:
|
||||
if st.intersection(c) == c:
|
||||
letters[2] = set([st])
|
||||
letters[5].remove(st)
|
||||
|
||||
bcdf = letters[4].pop()
|
||||
letters[4].add(bcdf)
|
||||
for st in letters[9]:
|
||||
if st.intersection(bcdf) == bcdf:
|
||||
letters[9] = set([st])
|
||||
letters[0].remove(st)
|
||||
num = ''
|
||||
for i in range(11, 15):
|
||||
entry = frozenset(line[i])
|
||||
j = 0
|
||||
for decoder in letters:
|
||||
popStorage = decoder.pop()
|
||||
decoder.add(popStorage)
|
||||
if popStorage == entry:
|
||||
num += chr(j+48)
|
||||
j += 1
|
||||
total += int(num)
|
||||
|
||||
print(total)
|
||||
Loading…
Add table
Add a link
Reference in a new issue