Beispiel #1
0
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:
Beispiel #2
0
Datei: aoc.py Projekt: xjules/AOC
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():
Beispiel #3
0
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)
Beispiel #4
0
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):