Compare commits
No commits in common. "ad6279089f1e928e58b0dad030d5c3721bbf8437" and "484491426db20b1e0496b28afa3d8accb14c640f" have entirely different histories.
ad6279089f
...
484491426d
58
day10/input
58
day10/input
|
@ -1,58 +0,0 @@
|
||||||
4310123125454565678965012358943210989010210012304563563434
|
|
||||||
3211054034565654561676983467659823874323398943215654654323
|
|
||||||
4302369879654243010385474563458765665489487654398723763210
|
|
||||||
8498478988732132121292365698369034568676574503123017898432
|
|
||||||
9567565676543001432101076547278125679676543211094323496501
|
|
||||||
8543676507867652549212981036107089588789232103785210587611
|
|
||||||
7652783412998543678903620125612176495610103212636707676210
|
|
||||||
6701698321037933567216710534523125324321254103529898764389
|
|
||||||
7810543232347874454325823678654034010110769054410940123476
|
|
||||||
8921610110356783456934934569869894321023898764321456794565
|
|
||||||
7432588741265492107821043234578785456954727101078329885103
|
|
||||||
6541099654378322345458945105678976597805610892189810876212
|
|
||||||
1232987653569011650367636789549565087012523483456734984301
|
|
||||||
0343070144432100701214521567034456176543434576598125675698
|
|
||||||
5452161230741019874303060158122367236521019665567018789789
|
|
||||||
6761256301876548965692176549411098547430978703456909874321
|
|
||||||
7890347892925437654782389432301387658945898112345870165230
|
|
||||||
6776598743210126541001457621001234987836761021012561276121
|
|
||||||
4985419654925676532156598517652125678787650130543490389030
|
|
||||||
5692308767834983413967873408743006569596543249610385476543
|
|
||||||
4781212546543072107856982189812217656678956658721276789102
|
|
||||||
3210327635632143896541001098700398540565656767812312650211
|
|
||||||
0105498126541234785432112387321478931234549898903403441300
|
|
||||||
3236787012670105656789003456430560121001430098874454532411
|
|
||||||
4145898001589012943297898987567654349432321127465367643589
|
|
||||||
5016892122410343821156907016698701298547671436540298654677
|
|
||||||
6787743433323456730045216326786543007678980569031109783288
|
|
||||||
5698659854014387645632305438987012114523871078122567892199
|
|
||||||
4321078765125499898701478367872123423014562147243498701088
|
|
||||||
7892101609872310761010569156989896545195543234789654310567
|
|
||||||
6543210018781423452329678043858787434387634989458743189430
|
|
||||||
7894780129690565563478932132567096125210125676367012078921
|
|
||||||
6785699434521874323567123021656101016702123401298323165854
|
|
||||||
5210568765430985015676054120743219650893034898765414234763
|
|
||||||
4323478100109871234982169437899658761282345601656500165102
|
|
||||||
5610789287234760673433478546778747654321096782347679877201
|
|
||||||
8767894396145654586524567612101238763011287891298981098389
|
|
||||||
9454765345039654497013456703212109812320345680307672387474
|
|
||||||
8303406230198763308902109874301238908765456765216787456565
|
|
||||||
3212312121347012210167878965614367819876310894345891015054
|
|
||||||
4301423001256756501456927874763456920101228701210432121123
|
|
||||||
4567434654105847832325210129871237843289339876398987430434
|
|
||||||
3438985783221938989414332012360345414576544325457676521543
|
|
||||||
0129676590130121098506541023456786105697630410056789439632
|
|
||||||
5432128976541232347687632010109897234788921569145697828701
|
|
||||||
6910067989867801256198924101256798105696512478234556910890
|
|
||||||
7823451678756988765011013212345011076787400321243235820789
|
|
||||||
7893210501243289454526767345432176585012341210134124321658
|
|
||||||
8761023432014107589439858956563089494654322301765010122545
|
|
||||||
9654107898123478676510347967874589323783215489834587636430
|
|
||||||
7543216967632569212141237876966678012894108566121098547821
|
|
||||||
8710125430541043103054321768345567600143289677032783456932
|
|
||||||
9651239821256456764569010109236768765234678788943894321013
|
|
||||||
2343256710347347895678765218189899874387667697656788965456
|
|
||||||
1954105409898216712989834367070786765496589874505497874387
|
|
||||||
0867134106701007603494325454321605834101476723214367801296
|
|
||||||
1798013265432198556583410765234514923452365214523254900145
|
|
||||||
5654329870120123467898327892101623014565454301234103213234
|
|
|
@ -1,8 +0,0 @@
|
||||||
89010123
|
|
||||||
78121874
|
|
||||||
87430965
|
|
||||||
96549874
|
|
||||||
45678903
|
|
||||||
32019012
|
|
||||||
01329801
|
|
||||||
10456732
|
|
58
day10/sol.py
58
day10/sol.py
|
@ -1,58 +0,0 @@
|
||||||
import itertools
|
|
||||||
from collections import Counter, deque
|
|
||||||
def read(file):
|
|
||||||
return [line.strip() for line in file]
|
|
||||||
|
|
||||||
def solve(file):
|
|
||||||
grid = read(file)
|
|
||||||
ny = len(grid)
|
|
||||||
nx = len(grid[0])
|
|
||||||
points = lambda: itertools.product(range(nx), range(ny))
|
|
||||||
|
|
||||||
def get(x,y):
|
|
||||||
if 0 <= x < nx and 0 <= y < ny:
|
|
||||||
return grid[y][x]
|
|
||||||
return '.'
|
|
||||||
|
|
||||||
def visit(x,y,h,n):
|
|
||||||
c = get(x,y)
|
|
||||||
if c == h:
|
|
||||||
assert (x,y) not in done
|
|
||||||
if (x,y) not in count:
|
|
||||||
queue.append((x,y))
|
|
||||||
count[x,y] += n
|
|
||||||
|
|
||||||
trailheads = [(x,y) for x,y in points() if get(x,y) == '0']
|
|
||||||
summits = [(x,y) for x,y in points() if get(x,y) == '9']
|
|
||||||
|
|
||||||
t1 = 0
|
|
||||||
t2 = 0
|
|
||||||
for p in trailheads:
|
|
||||||
queue = deque([p])
|
|
||||||
done = set()
|
|
||||||
count = Counter()
|
|
||||||
count[p] = 1
|
|
||||||
while queue:
|
|
||||||
x,y = queue.popleft()
|
|
||||||
#print(x,y,queue)
|
|
||||||
if (x,y) in done:
|
|
||||||
continue
|
|
||||||
done.add((x,y))
|
|
||||||
n = count[x,y]
|
|
||||||
c = get(x,y)
|
|
||||||
if c != '.' and c != '9':
|
|
||||||
h = str(int(c)+1)
|
|
||||||
visit(x+1,y,h,n)
|
|
||||||
visit(x-1,y,h,n)
|
|
||||||
visit(x,y+1,h,n)
|
|
||||||
visit(x,y-1,h,n)
|
|
||||||
for x,y in summits:
|
|
||||||
if (x,y) in done:
|
|
||||||
t1 += 1
|
|
||||||
t2 += count[x,y]
|
|
||||||
|
|
||||||
print(t1)
|
|
||||||
print(t2)
|
|
||||||
|
|
||||||
solve(open("sample5.in"))
|
|
||||||
solve(open("input"))
|
|
Loading…
Reference in New Issue