aoc / year_2021 /code /day_3.py
YassineAlouini
Start
0f06ae9
raw
history blame
1.77 kB
import numpy as np
from collections import Counter
def main():
def most_common_2d(data):
return [Counter(col).most_common()[0][0] for col in zip(*data)]
def least_common_2d(data):
return [Counter(col).most_common()[-1][0] for col in zip(*data)]
def Counter_2d(data):
return [Counter(col) for col in zip(*data)]
def search(data, to_search="1"):
if to_search == "1":
most_common_index = 0
else:
most_common_index = -1
previous_keep = data
for i in range(len(data[0])):
counts = Counter_2d(previous_keep)
keep = []
for row in previous_keep:
if (row[i] == counts[i].most_common()[most_common_index][0] and
counts[i]["0"] != counts[i]["1"]):
keep.append(row)
elif counts[i]["0"] == counts[i]["1"]:
if row[i] == to_search:
keep.append(row)
previous_keep = keep
return int("".join(previous_keep[0]), 2)
with open("/home/yassinealouini/Documents/code/advent_of_code/aoc/year_2021/data/3.txt") as f:
tmp = f.read().rstrip().split("\n")
data = []
for row in tmp:
data.append([e for e in row])
gamma = int("".join(most_common_2d(data)), 2)
epsilon = int("".join(least_common_2d(data)), 2)
print("Solution to part I: ", gamma * epsilon)
oxygen = search(data, "1")
co2 = search(data, "0")
print("Solution to part II: ", oxygen * co2)
def streamlit_torch_3(data_input):
""" Day 3 of AoC using PyTorch
"""
import torch
import streamlit as st
st.write("Solution to part I: ", 0)
if __name__ == "__main__":
main()