diff options
Diffstat (limited to 'articles/res/code2_j03_aoc.py')
-rw-r--r-- | articles/res/code2_j03_aoc.py | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/articles/res/code2_j03_aoc.py b/articles/res/code2_j03_aoc.py new file mode 100644 index 0000000..c373465 --- /dev/null +++ b/articles/res/code2_j03_aoc.py @@ -0,0 +1,38 @@ +total = 1 +number = [] + +with open("input") as f: + for line in f: + number.append(line.strip()) + +number_oxy = list(number) +number_co2 = list(number) + + +i = 0 +while len(number_oxy) > 1 and i < len(number_oxy[0]): + number_1 = len(list(filter(lambda x: x[i] == '1', number_oxy))) + total = len(number_oxy) + if number_1 >= total - number_1 : + keep = '1' + else: + keep = '0' + number_oxy = [ number for number in number_oxy if number[i] == keep] + i += 1 + +i = 0 +while len(number_co2) > 1 and i < len(number_co2[0]): + number_0 = len(list(filter(lambda x: x[i] == '0', number_co2))) + total = len(number_co2) + if number_0 > total - number_0 : + keep = '1' + else: + keep = '0' + number_co2 = [ number for number in number_co2 if number[i] == keep] + i += 1 + +oxy_rate = int("".join(number_oxy[0]), 2) +CO2_rate = int("".join(number_co2[0]), 2) + +print(oxy_rate * CO2_rate) + |