-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDay8.py
More file actions
108 lines (94 loc) · 3.34 KB
/
Day8.py
File metadata and controls
108 lines (94 loc) · 3.34 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
def brokendisplay():
f = open("input day 8.txt", "r")
lines = f.readlines()
delim = '|'
totalcodes = []
totaleasynumbers = 0
for line in lines:
codes = []
index = line.index(delim)
if lines.index(line) is not len(lines) - 1:
line = line[:-1]
line = line[index + 2:]
for code in line.split(' '):
codes.append(code)
totalcodes.append(codes)
for code in totalcodes:
for number in code:
if len(number) == 2 or len(number) == 3 or len(number) == 4 or len(number) == 7:
totaleasynumbers += 1
print(line)
print(codes)
print(totalcodes)
print(totaleasynumbers)
def decodeDisplay():
f = open("input day 8.txt", "r")
lines = f.readlines()
delim = '|'
totalcodes = []
totaaloutput = []
for line in lines:
delimvlag = 0
codeinline = []
inputnumbers = []
outputnumbers = []
if line[-1] == '\n':
line = line[:-1] #remove last \n
allnumbers = line.split(' ')
for number in allnumbers:
if number == delim:
delimvlag = 1
if delimvlag == 0:
inputnumbers.append(number)
if delimvlag == 1 and number != delim:
outputnumbers.append(number)
codeinline.append(inputnumbers)
codeinline.append(outputnumbers)
totalcodes.append(codeinline)
for codeline in totalcodes:
nummers = ['', '', '', '', '', '', '', '', '', '']
output = []
for code in codeline[0]:
if len(code) == 2:
een = set(code)
nummers[1] = code
if len(code) == 3:
zeven = set(code)
nummers[7] = code
if len(code) == 4:
vier = set(code)
nummers[4] = code
if len(code) == 7:
acht = set(code)
nummers[8] = code
for code in codeline[0]:
if len(code) == 5 and een.issubset(set(code)):
drie = set(code)
nummers[3] = code
if len(code) == 6 and een.issubset(set(code)) is False:
zes = set(code)
nummers[6] = code
linksonder = acht.copy()
linksonder = acht.difference(drie)
linksboven = linksonder.intersection(vier)
linksonder = linksonder.difference(vier)
for code in codeline[0]:
if len(code) == 6 and linksonder.issubset(set(code)) and een.issubset(set(code)):
nul = set(code)
nummers[0] = code
if len(code) == 6 and set(code) == acht.difference(linksonder):
negen = set(code)
nummers[9] = code
if len(code) == 5 and linksonder.issubset(set(code)):
twee = set(code)
nummers[2] = code
if len(code) == 5 and linksboven.issubset(set(code)):
vijf = set(code)
nummers[5] = code
for outputnummer in codeline[1]:
for nummer in nummers:
if len(set(nummer).symmetric_difference(set(outputnummer))) == 0:
output.append(str(nummers.index(nummer)))
outputstring = "".join(output)
totaaloutput.append(int(outputstring))
print(sum(totaaloutput))