10.1, 10.2 python
This commit is contained in:
@@ -0,0 +1,42 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
data = open("input.txt").read().strip().split("\n")
|
||||||
|
data = [list(map(int, x)) for x in data]
|
||||||
|
|
||||||
|
def make_bound(data):
|
||||||
|
N = len(data)
|
||||||
|
M = len(data)
|
||||||
|
def bound(i, j):
|
||||||
|
return 0<=i<N and 0<=j<M
|
||||||
|
return bound
|
||||||
|
|
||||||
|
def f1(data, collect=set):
|
||||||
|
def score(i, j, x=0):
|
||||||
|
if not bound(i, j):
|
||||||
|
return
|
||||||
|
if data[i][j]!=x:
|
||||||
|
return
|
||||||
|
if x==9:
|
||||||
|
yield (i, j)
|
||||||
|
for di, dj in d:
|
||||||
|
yield from score(i+di, j+dj, x+1)
|
||||||
|
zeroes = [(i, j) for i, l in enumerate(data) for j, x in enumerate(l) if x==0]
|
||||||
|
bound = make_bound(data)
|
||||||
|
d = [(1,0), (0,1), (-1,0), (0,-1)]
|
||||||
|
return sum(1 for z in zeroes for _ in collect(score(*z)))
|
||||||
|
print(f1(data))
|
||||||
|
d = '''
|
||||||
|
89010123
|
||||||
|
78121874
|
||||||
|
87430965
|
||||||
|
96549874
|
||||||
|
45678903
|
||||||
|
32019012
|
||||||
|
01329801
|
||||||
|
10456732
|
||||||
|
'''.strip().split("\n")
|
||||||
|
d = [list(map(int, x)) for x in d]
|
||||||
|
print(f1(d))
|
||||||
|
|
||||||
|
print(f1(data, list))
|
||||||
Reference in New Issue
Block a user