Add solution for day 3
This commit is contained in:
1 parent
ce9790b20d
commit
a9c55959c2
3 files changed
+1136
No files matched your search
Executable
+62
@@ -0,0 +1,62 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import sys
|
||||
|
||||
def inverted(i):
|
||||
if i == 0:
|
||||
return 1
|
||||
else:
|
||||
return 0
|
||||
|
||||
def filter(lis, pos, i):
|
||||
if len(lis) == 1:
|
||||
return lis
|
||||
if sum([b[pos] for b in lis]) >= sum([inverted(b[pos]) for b in lis]):
|
||||
val = i
|
||||
else:
|
||||
val = inverted(i)
|
||||
|
||||
return [i for i in lis if i[pos] == val]
|
||||
|
||||
if __name__ == '__main__':
|
||||
lines = open(sys.argv[1]).readlines()
|
||||
|
||||
bins = [[int(i) for i in list(l.strip('\n'))] for l in lines]
|
||||
|
||||
# challenge 1
|
||||
lis = [0] * len(bins[0])
|
||||
|
||||
for i in range(len(bins[0])):
|
||||
lis[i] = sum([b[i] for b in bins])
|
||||
|
||||
g = ''
|
||||
e = ''
|
||||
|
||||
for i in range(len(bins[0])):
|
||||
if lis[i] > 0.5 * len(lines):
|
||||
g += '1'
|
||||
e += '0'
|
||||
else:
|
||||
g += '0'
|
||||
e += '1'
|
||||
|
||||
gamma = int(g, 2)
|
||||
eps = int(e,2)
|
||||
|
||||
res1 = str(gamma * eps)
|
||||
print("challenge 1:" + res1 + "\n")
|
||||
|
||||
ox = bins
|
||||
co2 = bins
|
||||
|
||||
# challenge 2
|
||||
for i in range(len(bins[0])):
|
||||
ox = filter(ox, i, 1)
|
||||
co2 = filter(co2, i, 0)
|
||||
|
||||
oxr = int(''.join(str(i) for i in ox[0]), 2)
|
||||
csr = int(''.join(str(i) for i in co2[0]), 2)
|
||||
|
||||
res2 = str(oxr * csr)
|
||||
print("challenge 2:" + res2 + "\n")
|
||||
|
||||
Reference in new issue
Block a user