Skip to content

Instantly share code, notes, and snippets.

View rodrigogiraoserrao's full-sized avatar
🐍

Rodrigo Girão Serrão rodrigogiraoserrao

🐍
View GitHub Profile
# === Parsing ===
keys = []
locks = []
with open("input.txt", "r") as f:
contents = f.read()
for block in contents.split("\n\n"):
lines = block.splitlines()
counts = [col.count("#") - 1 for col in zip(*lines)]
# === Parsing ===
values = {}
dependencies = {}
zs = set()
with open("input.txt", "r") as f:
for line in iter(f.readline, "\n"):
wire, value = line.strip().split(": ")
values[wire] = int(value)
# === Parsing ===
from collections import defaultdict
edges = defaultdict(set)
with open("input.txt", "r") as f:
for line in f:
n1, n2 = line.strip().split("-")
edges[n1].add(n2)
edges[n2].add(n1)
# === Parsing ===
with open("input.txt", "r") as f:
seeds = [int(line) for line in f]
# === Part 1 ===
from collections import deque
from itertools import islice
# === Parsing ===
with open("input.txt", "r") as f:
codes = [line.strip() for line in f]
print(codes)
# === Part 1 ===
numpad_pos = {
# === Parsing ===
valid = set()
start = None
end = None
with open("input.txt", "r") as f:
for y, line in enumerate(f):
for x, char in enumerate(line.strip()):
if char in ".SE":
# === Parsing ===
with open("input.txt", "r") as f:
towels = tuple(f.readline().strip().split(", "))
_ = f.readline()
patterns = [line.strip() for line in f]
# === Part 1 ===
# === Parsing ===
from itertools import product
SIZE = 70
with open("input.txt", "r") as f:
falling_bytes = [tuple(int(num) for num in line.split(",")) for line in f]
valid = set(product(range(SIZE + 1), repeat=2))
# === Parsing ===
with open("input.txt", "r") as f:
register_a = int(f.readline().split()[-1])
register_b = int(f.readline().split()[-1])
register_c = int(f.readline().split()[-1])
_ = f.readline()
program = [int(num) for num in f.readline().split()[-1].split(",")]
print(program, register_a, register_b, register_c)
# === Parsing ===
start = None
end = None
valid = set()
with open("input.txt", "r") as f:
for y, line in enumerate(f):
for x, char in enumerate(line.strip()):
if char in ".SE":
valid.add((x, y))