-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDay3.py
More file actions
98 lines (93 loc) · 2.43 KB
/
Day3.py
File metadata and controls
98 lines (93 loc) · 2.43 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
def day3():
f = open("input day 3.txt", "r")
lines = f.readlines()
digits = []
binary = []
inverse = []
gamma = 0
epsilon = 0
for digit in lines[0]:
if digit == "0" or digit == "1":
digits.append(0)
for line in lines:
i = 0
while i < len(line):
if line[i] == "1":
digits[i] += 1
i += 1
i = 0
while i < len(digits):
if digits[i] >= (len(lines)/2):
binary.append(1)
else:
binary.append(0)
i += 1
gamma = sum(val*(2**idx) for idx, val in enumerate(reversed(binary)))
for bit in binary:
if bit == 1:
inverse.append(0)
else:
inverse.append(1)
epsilon = sum(val*(2**idx) for idx, val in enumerate(reversed(inverse)))
print(gamma * epsilon)
#16699856 too high
def day3_2():
f = open("input day 3.txt", "r")
lines = f.readlines()
numbers = []
for line in lines:
numbers.append(line)
print(oxygengenerator(numbers) * CO2Scrubber(numbers))
def oxygengenerator(list):
bin = []
for line in list:
if '\n' in line:
bin.append(line[0:-1])
else:
bin.append(line)
i = 0
while i < len(bin[0]):
count = 0
newlist = []
for number in bin:
if number[i] == '1':
count += 1
if count >= len(bin) / 2:
for number in bin:
if number[i] == '1':
newlist.append(number)
else:
for number in bin:
if number[i] == '0':
newlist.append(number)
bin = newlist
i += 1
print(bin)
return int(bin[0], 2)
def CO2Scrubber(list):
bin = []
for line in list:
if '\n' in line:
bin.append(line[0:-1])
else:
bin.append(line)
i = 0
while i < len(bin[0]):
count = 0
newlist = []
for number in bin:
if number[i] == '0':
count += 1
if count <= len(bin) / 2:
for number in bin:
if number[i] == '0':
newlist.append(number)
else:
for number in bin:
if number[i] == '1':
newlist.append(number)
bin = newlist
i += 1
if len(bin) == 1:
return int(bin[0], 2)
return int(bin[0], 2)