day 11 & day 12
This commit is contained in:
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user