from utils import read_lines_str from copy import deepcopy values = read_lines_str("AOC2020/aoc11/input.txt", ch=None) values = [list(v.strip()) for v in values] _vals = deepcopy(values) vals_out = deepcopy(values) def check_adjacent(i, j, vals): count_taken = 0 xmin = max(0, i - 1) xmax = min(len(vals[0]) - 1, i + 1) ymin = max(0, j - 1) ymax = min(len(vals) - 1, j + 1) for x in range(xmin, xmax + 1): for y in range(ymin, ymax + 1): if y == j and i == x: continue if vals[y][x] == "#": count_taken += 1 return count_taken def check_seat(i, j, vals): global vals_out if vals[j][i] == "L": if check_adjacent(i, j, vals) == 0: vals_out[j][i] = "#" elif vals[j][i] == "#": if check_adjacent(i, j, vals) >= 4:
import regex from utils import read_lines_str values = read_lines_str("AOC2020/aoc04/input_test_invalid.txt", ch=None) fields = { "byr": None, "iyr": None, "eyr": None, "hgt": None, "hcl": None, "ecl": None, "pid": None, # "cid": None, } passports = [] passport = fields.copy() for v in values: if ":" in v: l = [s.split(":") for s in v.split()] for item in l: passport[item[0]] = item[1] else: passports.append(passport.copy()) passport = fields.copy() # this's optional passports.append(passport.copy()) # part I def count_valid_passports():
from utils import read_lines_str import numpy as np comands = read_lines_str("AOC2021/aoc02/input.txt") class Submarine: def __init__(self): self.H = 0 self.D = 0 self.aim = 0 def do_steps(self, cmd): c, x = cmd.split() steps_depth = {"down": 1, "up": -1} steps_pos = {"forward": 1} if c in steps_depth: self.D += steps_depth[c] * int(x) elif c in steps_pos: self.H += steps_pos[c] * int(x) def do_steps_complex(self, cmd): c, x = cmd.split() steps_depth = {"down": 1, "up": -1} steps_pos = {"forward": 1} if c in steps_depth: self.aim += steps_depth[c] * int(x) elif c in steps_pos: self.H += steps_pos[c] * int(x) self.D += self.aim * int(x)
import utils import numpy as np from copy import deepcopy lines_raw = utils.read_lines_str("AOC2021/aoc08/input.txt") num_code = { "abcefg": 0, "cf": 1, "acdeg": 2, "acdfg": 3, "bcdf": 4, "abdfg": 5, "abdefg": 6, "acf": 7, "abcdefg": 8, "abcdfg": 9, } def part_I(arr): cnt = 0 for line in arr: _input, _output = line.split("|") for sig_output in _output.split(): if len(sig_output) in [2, 3, 4, 7]: cnt += 1 print(cnt) def part_II(arr):