Skip to content

Commit 14c4f4f

Browse files
authored
Add files via upload
1 parent c4842ff commit 14c4f4f

File tree

1 file changed

+82
-0
lines changed

1 file changed

+82
-0
lines changed

Day 8.py

+82
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
test2 = ['acedgfb cdfbe gcdfa fbcad dab cefabd cdfgeb eafb cagedb ab | cdfeb fcadb cdfeb cdbaf']
2+
3+
test = '''be cfbegad cbdgef fgaecd cgeb fdcge agebfd fecdb fabcd edb | fdgacbe cefdb cefbgd gcbe
4+
edbfga begcd cbg gc gcadebf fbgde acbgfd abcde gfcbed gfec | fcgedb cgb dgebacf gc
5+
fgaebd cg bdaec gdafb agbcfd gdcbef bgcad gfac gcb cdgabef | cg cg fdcagb cbg
6+
fbegcd cbd adcefb dageb afcb bc aefdc ecdab fgdeca fcdbega | efabcd cedba gadfec cb
7+
aecbfdg fbg gf bafeg dbefa fcge gcbea fcaegb dgceab fcbdga | gecf egdcabf bgf bfgea
8+
fgeab ca afcebg bdacfeg cfaedg gcfdb baec bfadeg bafgc acf | gebdcfa ecba ca fadegcb
9+
dbcfg fgd bdegcaf fgec aegbdf ecdfab fbedc dacgb gdcebf gf | cefg dcbef fcge gbcadfe
10+
bdfegc cbegaf gecbf dfcage bdacg ed bedf ced adcbefg gebcd | ed bcgafe cdgba cbgef
11+
egadfb cdbfeg cegd fecab cgb gbdefca cg fgcdab egfdb bfceg | gbdfcae bgc cg cgb
12+
gcafb gcf dcaebfg ecagb gf abcdeg gaef cafbge fdbac fegbdc | fgae cfgab fg bagce'''.split('\n')
13+
inp = open('Day 8.txt','r').read().split('\n')
14+
15+
def part1(inp):
16+
ans = 0
17+
for i in inp:
18+
output = i.split('| ')[1]
19+
for x in output.split(' '):
20+
length = len(x)
21+
if length == 2 or length == 3 or length == 4 or length == 7:
22+
ans += 1
23+
print(ans)
24+
25+
26+
def part2(inp):
27+
ans = 0
28+
for i in inp:
29+
patterns = i.split(' |')[0].split()
30+
patterns.sort(key=len)
31+
signals = [list('abcdefg') for i in range(7)]
32+
signals[0] = [i for i in list(patterns[1]) if i not in list(patterns[0])][0]
33+
signals[1] = [i for i in list(patterns[2]) if i not in list(patterns[0])]
34+
signals[2] = list(patterns[0])
35+
signals[3] = [i for i in list(patterns[2]) if i not in list(patterns[0])]
36+
signals[4] = [i for i in list('abcdefg') if i not in list(patterns[1])+list(patterns[2])]
37+
signals[5] = list(patterns[0])
38+
signals[6] = [i for i in list('abcdefg') if i not in list(patterns[1])+list(patterns[2])]
39+
40+
char5 = patterns[3:6]
41+
if sum([chars.count(signals[1][0]) for chars in char5]) == 1:
42+
signals[1] = signals[1][0]
43+
signals[3] = signals[3][1]
44+
else:
45+
signals[1] = signals[1][1]
46+
signals[3] = signals[3][0]
47+
48+
char6 = patterns[6:9]
49+
if sum([chars.count(signals[2][0]) for chars in char6]) == 2:
50+
signals[2] = signals[2][0]
51+
signals[5] = signals[5][1]
52+
else:
53+
signals[2] = signals[2][1]
54+
signals[5] = signals[5][0]
55+
if sum([chars.count(signals[4][0]) for chars in char6]) == 2:
56+
signals[4] = signals[4][0]
57+
signals[6] = signals[6][1]
58+
else:
59+
signals[4] = signals[4][1]
60+
signals[6] = signals[6][0]
61+
62+
63+
out = i.split('| ')[1].split()
64+
string = ''
65+
for digit in out:
66+
match sorted([signals.index(i) for i in digit]):
67+
case [0,1,2,4,5,6]: string += '0'
68+
case [2,5]: string += '1'
69+
case [0,2,3,4,6]: string += '2'
70+
case [0,2,3,5,6]: string += '3'
71+
case [1,2,3,5]: string += '4'
72+
case [0,1,3,5,6]: string += '5'
73+
case [0,1,3,4,5,6]: string += '6'
74+
case [0,2,5]: string += '7'
75+
case [0,1,2,3,4,5,6]: string += '8'
76+
case [0,1,2,3,5,6]: string += '9'
77+
ans += int(string)
78+
print(ans)
79+
80+
81+
part1(inp)
82+
part2(inp)

0 commit comments

Comments
 (0)