day 11 & day 12

This commit is contained in:
2024-12-14 21:41:56 +01:00
parent fa4e8f7a58
commit 441dac30b7
10 changed files with 418 additions and 2 deletions

View File

@@ -5,6 +5,7 @@
import sys,time
from helpingFunctions import *
from collections import defaultdict
setSampleMode(False)
@@ -13,13 +14,49 @@ aocYear = identifyYear(sys.argv[0])
path = getPath2Data(aocDay,aocYear)
filename = getFilename2Data(aocDay)
def createGrid(data):
grid = {}
for gridY in range(len(data)):
for gridX in range(len(data[0])):
grid[gridX,gridY]=int(data[gridY][gridX])
return grid
def findTrails(grid):
trails = {}
trailStartList = [k for k,v in grid.items() if v == 0]
return trailStartList
def findNextinTrail(pos,trail,grid,p2=False):
ret = []
trailX,trailY = trail
for moveX,moveY in [(-1,0),(0,-1),(1,0),(0,1)]:
try:
value = grid[(trailX+moveX,trailY+moveY)]
except:
value = -1
if value == 9 and pos == 8:
ret.append((trailX+moveX,trailY+moveY))
elif value == pos + 1:
ret = ret + findNextinTrail(pos+1,(trailX+moveX,trailY+moveY),grid,p2)
if p2 == False:
ret = list(set(ret))
return list(ret)
def taskA (data) -> int:
gameScoreA = 0
grid = createGrid(data)
trailList = findTrails(grid)
for trail in trailList:
gameScoreA += len(findNextinTrail(0,trail,grid))
return gameScoreA
def taskB (data) -> int:
gameScoreB = 0
grid = createGrid(data)
trailList = findTrails(grid)
for trail in trailList:
gameScoreB += len(findNextinTrail(0,trail,grid,True))
return gameScoreB
def task(task: int,data) -> int: