mirror of
https://github.com/Crocmagnon/advent-of-code.git
synced 2024-11-05 14:23:58 +01:00
Solve day 10 part 1
This commit is contained in:
parent
3873358c14
commit
69932539a7
5 changed files with 352 additions and 21 deletions
57
2022/day10_cathode.py
Normal file
57
2022/day10_cathode.py
Normal file
|
@ -0,0 +1,57 @@
|
||||||
|
def main(filename: str, expected_part_1: int = None, expected_part_2: int = None):
|
||||||
|
print(f"\n+ Running on {filename}")
|
||||||
|
with open(filename) as f:
|
||||||
|
data = f.read().strip().split("\n")
|
||||||
|
|
||||||
|
data = parse_data(data)
|
||||||
|
solution_part_1 = solve_part_1(data)
|
||||||
|
|
||||||
|
print(f"1. Found {solution_part_1}")
|
||||||
|
if expected_part_1:
|
||||||
|
assert expected_part_1 == solution_part_1
|
||||||
|
|
||||||
|
solution_part_2 = solve_part_2(data)
|
||||||
|
print(f"2. Found {solution_part_2}")
|
||||||
|
if expected_part_2:
|
||||||
|
assert expected_part_2 == solution_part_2
|
||||||
|
|
||||||
|
|
||||||
|
DataType = list[str]
|
||||||
|
|
||||||
|
|
||||||
|
def parse_data(data: list[str]) -> DataType:
|
||||||
|
return data
|
||||||
|
|
||||||
|
|
||||||
|
def solve_part_1(data: DataType) -> int:
|
||||||
|
total = 0
|
||||||
|
register = 1
|
||||||
|
clock = 0
|
||||||
|
expected_cycles = [20, 60, 100, 140, 180, 220]
|
||||||
|
for instruction in data:
|
||||||
|
match instruction.split():
|
||||||
|
case ["noop"]:
|
||||||
|
clock += 1
|
||||||
|
if clock in expected_cycles:
|
||||||
|
print(f"{clock=}, {register=}")
|
||||||
|
total += register * clock
|
||||||
|
case ["addx", value]:
|
||||||
|
clock += 1
|
||||||
|
if clock in expected_cycles:
|
||||||
|
print(f"{clock=}, {register=}")
|
||||||
|
total += register * clock
|
||||||
|
clock += 1
|
||||||
|
if clock in expected_cycles:
|
||||||
|
print(f"{clock=}, {register=}")
|
||||||
|
total += register * clock
|
||||||
|
register += int(value)
|
||||||
|
return total
|
||||||
|
|
||||||
|
|
||||||
|
def solve_part_2(data: DataType) -> int:
|
||||||
|
return 0
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main("inputs/day10-test1", expected_part_1=13140)
|
||||||
|
main("inputs/day10")
|
145
2022/inputs/day10
Normal file
145
2022/inputs/day10
Normal file
|
@ -0,0 +1,145 @@
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx 3
|
||||||
|
addx 7
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx 6
|
||||||
|
noop
|
||||||
|
addx -1
|
||||||
|
noop
|
||||||
|
addx 5
|
||||||
|
addx 1
|
||||||
|
noop
|
||||||
|
addx 4
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx 6
|
||||||
|
addx -1
|
||||||
|
noop
|
||||||
|
addx 3
|
||||||
|
addx -13
|
||||||
|
addx -22
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx 3
|
||||||
|
addx 2
|
||||||
|
addx 11
|
||||||
|
addx -4
|
||||||
|
addx 11
|
||||||
|
addx -10
|
||||||
|
addx 2
|
||||||
|
addx 5
|
||||||
|
addx 2
|
||||||
|
addx -2
|
||||||
|
noop
|
||||||
|
addx 7
|
||||||
|
addx 3
|
||||||
|
addx -2
|
||||||
|
addx 2
|
||||||
|
addx 5
|
||||||
|
addx 2
|
||||||
|
addx -2
|
||||||
|
addx -8
|
||||||
|
addx -27
|
||||||
|
addx 5
|
||||||
|
addx 2
|
||||||
|
addx 21
|
||||||
|
addx -21
|
||||||
|
addx 3
|
||||||
|
addx 5
|
||||||
|
addx 2
|
||||||
|
addx -3
|
||||||
|
addx 4
|
||||||
|
addx 3
|
||||||
|
addx 1
|
||||||
|
addx 5
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx 3
|
||||||
|
addx 1
|
||||||
|
addx 6
|
||||||
|
addx -31
|
||||||
|
noop
|
||||||
|
addx -4
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx 3
|
||||||
|
addx 7
|
||||||
|
noop
|
||||||
|
addx -1
|
||||||
|
addx 1
|
||||||
|
addx 5
|
||||||
|
noop
|
||||||
|
addx 1
|
||||||
|
noop
|
||||||
|
addx 2
|
||||||
|
addx -8
|
||||||
|
addx 15
|
||||||
|
addx 3
|
||||||
|
noop
|
||||||
|
addx 2
|
||||||
|
addx 5
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx -28
|
||||||
|
addx 11
|
||||||
|
addx -20
|
||||||
|
noop
|
||||||
|
addx 7
|
||||||
|
addx -2
|
||||||
|
addx 7
|
||||||
|
noop
|
||||||
|
addx -2
|
||||||
|
noop
|
||||||
|
addx -6
|
||||||
|
addx 11
|
||||||
|
noop
|
||||||
|
addx 3
|
||||||
|
addx 2
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx 7
|
||||||
|
addx 3
|
||||||
|
addx -2
|
||||||
|
addx 2
|
||||||
|
addx 5
|
||||||
|
addx 2
|
||||||
|
addx -16
|
||||||
|
addx -10
|
||||||
|
addx -11
|
||||||
|
addx 27
|
||||||
|
addx -20
|
||||||
|
noop
|
||||||
|
addx 2
|
||||||
|
addx 3
|
||||||
|
addx 5
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx 3
|
||||||
|
addx -2
|
||||||
|
addx 2
|
||||||
|
noop
|
||||||
|
addx -14
|
||||||
|
addx 21
|
||||||
|
noop
|
||||||
|
addx -6
|
||||||
|
addx 12
|
||||||
|
noop
|
||||||
|
addx -21
|
||||||
|
addx 24
|
||||||
|
addx 2
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
146
2022/inputs/day10-test1
Normal file
146
2022/inputs/day10-test1
Normal file
|
@ -0,0 +1,146 @@
|
||||||
|
addx 15
|
||||||
|
addx -11
|
||||||
|
addx 6
|
||||||
|
addx -3
|
||||||
|
addx 5
|
||||||
|
addx -1
|
||||||
|
addx -8
|
||||||
|
addx 13
|
||||||
|
addx 4
|
||||||
|
noop
|
||||||
|
addx -1
|
||||||
|
addx 5
|
||||||
|
addx -1
|
||||||
|
addx 5
|
||||||
|
addx -1
|
||||||
|
addx 5
|
||||||
|
addx -1
|
||||||
|
addx 5
|
||||||
|
addx -1
|
||||||
|
addx -35
|
||||||
|
addx 1
|
||||||
|
addx 24
|
||||||
|
addx -19
|
||||||
|
addx 1
|
||||||
|
addx 16
|
||||||
|
addx -11
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx 21
|
||||||
|
addx -15
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx -3
|
||||||
|
addx 9
|
||||||
|
addx 1
|
||||||
|
addx -3
|
||||||
|
addx 8
|
||||||
|
addx 1
|
||||||
|
addx 5
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx -36
|
||||||
|
noop
|
||||||
|
addx 1
|
||||||
|
addx 7
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx 2
|
||||||
|
addx 6
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx 1
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx 7
|
||||||
|
addx 1
|
||||||
|
noop
|
||||||
|
addx -13
|
||||||
|
addx 13
|
||||||
|
addx 7
|
||||||
|
noop
|
||||||
|
addx 1
|
||||||
|
addx -33
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx 2
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx 8
|
||||||
|
noop
|
||||||
|
addx -1
|
||||||
|
addx 2
|
||||||
|
addx 1
|
||||||
|
noop
|
||||||
|
addx 17
|
||||||
|
addx -9
|
||||||
|
addx 1
|
||||||
|
addx 1
|
||||||
|
addx -3
|
||||||
|
addx 11
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx 1
|
||||||
|
noop
|
||||||
|
addx 1
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx -13
|
||||||
|
addx -19
|
||||||
|
addx 1
|
||||||
|
addx 3
|
||||||
|
addx 26
|
||||||
|
addx -30
|
||||||
|
addx 12
|
||||||
|
addx -1
|
||||||
|
addx 3
|
||||||
|
addx 1
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx -9
|
||||||
|
addx 18
|
||||||
|
addx 1
|
||||||
|
addx 2
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx 9
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx -1
|
||||||
|
addx 2
|
||||||
|
addx -37
|
||||||
|
addx 1
|
||||||
|
addx 3
|
||||||
|
noop
|
||||||
|
addx 15
|
||||||
|
addx -21
|
||||||
|
addx 22
|
||||||
|
addx -6
|
||||||
|
addx 1
|
||||||
|
noop
|
||||||
|
addx 2
|
||||||
|
addx 1
|
||||||
|
noop
|
||||||
|
addx -10
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx 20
|
||||||
|
addx 1
|
||||||
|
addx 2
|
||||||
|
addx 2
|
||||||
|
addx -6
|
||||||
|
addx -11
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
|
@ -1,24 +1,3 @@
|
||||||
[tool.poetry]
|
|
||||||
name = "advent-of-code"
|
|
||||||
version = "0.1.0"
|
|
||||||
description = ""
|
|
||||||
authors = ["Gabriel Augendre <gabriel@augendre.info>"]
|
|
||||||
license = "Unlicense"
|
|
||||||
|
|
||||||
[tool.poetry.dependencies]
|
|
||||||
python = "^3.10"
|
|
||||||
networkx = ">=2.5"
|
|
||||||
pdbpp = ">=0.10.2"
|
|
||||||
|
|
||||||
[tool.poetry.dev-dependencies]
|
|
||||||
pre-commit = ">=2.9.2"
|
|
||||||
pytest = ">=6.1.2"
|
|
||||||
|
|
||||||
[build-system]
|
|
||||||
requires = ["poetry-core>=1.0.0"]
|
|
||||||
build-backend = "poetry.core.masonry.api"
|
|
||||||
|
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# flake8 / flakeheaven
|
# flake8 / flakeheaven
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
4
requirements.txt
Normal file
4
requirements.txt
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
networkx>=2.5
|
||||||
|
|
||||||
|
pre-commit
|
||||||
|
pytest
|
Loading…
Reference in a new issue