day15 start

This commit is contained in:
Stefan Harmuth 2025-07-19 11:17:10 +02:00
parent b8c11565c7
commit f907be2b20
7 changed files with 102 additions and 0 deletions

58
day15.py Normal file
View File

@ -0,0 +1,58 @@
from enum import Enum
from tools.aoc import AOCDay
from typing import Any
from tools.grid import Grid
class UnitType(int, Enum):
GOBLIN = 1
ELF = 2
class Unit:
def __init__(self, unit_type: UnitType):
self.unit_type = unit_type
self.hit_points = 300
self.attack_power = 3
class Day(AOCDay):
inputs = [
[
(27730, "input15_test1"),
(36334, "input15_test2"),
(39514, "input15_test3"),
(27755, "input15_test4"),
(28944, "input15_test5"),
(18740, "input15_test6"),
(None, "input15"),
],
[
(None, "input15"),
],
]
def parse_input(self) -> Grid:
grid = Grid.from_data(self.getInput())
for c in grid.getActiveCells():
if grid.get(c) not in "EG":
continue
if grid.get(c) == "E":
grid.set(c, Unit(UnitType.ELF))
else:
grid.set(c, Unit(UnitType.GOBLIN))
return grid
def part1(self) -> Any:
return ""
def part2(self) -> Any:
return ""
if __name__ == "__main__":
day = Day(2018, 15)
day.run(verbose=True)

7
inputs/input15_test1 Normal file
View File

@ -0,0 +1,7 @@
#######
#.G...#
#...EG#
#.#.#G#
#..G#E#
#.....#
#######

7
inputs/input15_test2 Normal file
View File

@ -0,0 +1,7 @@
#######
#G..#E#
#E#E.E#
#G.##.#
#...#E#
#...E.#
#######

7
inputs/input15_test3 Normal file
View File

@ -0,0 +1,7 @@
#######
#E..EG#
#.#G.E#
#E.##E#
#G..#.#
#..E#.#
#######

7
inputs/input15_test4 Normal file
View File

@ -0,0 +1,7 @@
#######
#E.G#.#
#.#G..#
#G.#.G#
#G..#.#
#...E.#
#######

7
inputs/input15_test5 Normal file
View File

@ -0,0 +1,7 @@
#######
#.E...#
#.#..G#
#.###.#
#E#G#G#
#...#G#
#######

9
inputs/input15_test6 Normal file
View File

@ -0,0 +1,9 @@
#########
#G......#
#.E.#...#
#..##..G#
#...##..#
#...#...#
#.G...G.#
#.....G.#
#########