2021/3 challenge

This commit is contained in:
randomuser 2022-07-02 16:31:41 -05:00
parent c29460a0a9
commit 672d8df7b6
4 changed files with 1099 additions and 0 deletions

27
2021/3/1.py Normal file
View File

@ -0,0 +1,27 @@
#!/usr/bin/env python3
file = [i.rstrip() for i in open("input").readlines()]
def gammaepsil(data):
bufg = []
bufe = []
for i in range(len(data[0])):
one = 0
zero = 0
for j in range(len(data)):
if data[j][i] == "0":
zero += 1
else:
one += 1
if zero > one:
bufg.append("0")
bufe.append("1")
else:
bufg.append("1")
bufe.append("0")
return [int(''.join(bufg), base=2), int(''.join(bufe), base=2)]
res = gammaepsil(file)
print(res[0], res[1], res[0]*res[1])

60
2021/3/2.py Normal file
View File

@ -0,0 +1,60 @@
#!/usr/bin/env python3
files = [i.rstrip() for i in open("input").readlines()]
def oxy(bits):
zero = 0
one = 0
for i in bits:
if i == "0":
zero += 1
else:
one += 1
if zero > one:
return 0
elif one > zero:
return 1
elif one == zero:
return 1
def co2(bits):
zero = 0
one = 0
for i in bits:
if i == "0":
zero += 1
else:
one += 1
if zero < one:
return 0
elif one < zero:
return 1
elif one == zero:
return 0
def oxygen(fields):
buf = fields
for i in range(len(fields[0])):
testing = [j[i] for j in buf]
oxygenrating = oxy(testing)
buf = [j for j in buf if int(j[i]) == oxygenrating]
return buf
def carbdio(fields):
buf = fields
for i in range(len(fields[0])):
if len(buf) == 1: break
testing = [j[i] for j in buf]
print(buf, testing)
co2rating = co2(testing)
buf = [j for j in buf if int(j[i]) == co2rating]
return buf
oxygenreal = int(''.join(oxygen(files)), base=2)
carbdioreal = int(''.join(carbdio(files)), base=2)
print(oxygenreal, carbdioreal, oxygenreal * carbdioreal)

12
2021/3/example Normal file
View File

@ -0,0 +1,12 @@
00100
11110
10110
10111
10101
01111
00111
11100
10000
11001
00010
01010

1000
2021/3/input Normal file

File diff suppressed because it is too large Load Diff