-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path7.py
More file actions
93 lines (69 loc) · 1.42 KB
/
7.py
File metadata and controls
93 lines (69 loc) · 1.42 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
import math
import collections
from collections import Counter
import re
from tqdm import tqdm
TEST = """
.......S.......
...............
.......^.......
...............
......^.^......
...............
.....^.^.^.....
...............
....^.^...^....
...............
...^.^...^.^...
...............
..^...^.....^..
...............
.^.^.^.^.^...^.
...............
"""
PROD = """
"""
x = TEST
x = PROD
x = x.strip("\n")
# Data in differnt formats for quick access
text = x
lines = x.split("\n")
lines = [list(line) for line in lines]
result = 0
bs = set()
lines[1] = [(e if e != "S" else "|") for e in lines[0]]
lines.pop(0)
# BUILG GRAPH FROM P1
g = {}
s = 0
for i in range(0,len(lines)-1):
curr = lines[i]
nex = lines[i+1]
for j, v in enumerate(curr):
if v == "|" and nex[j] == "^":
s += 1
bs.add( (i+1,j-1) )
lines[i+1][j-1] = "|"
bs.add( (i+1,j+1) )
lines[i+1][j+1] = "|"
g[(i,j)] = [(i+1,j-1), (i+1,j+1)]
elif v == "|":
lines[i+1][j] = "|"
g[(i,j)] = [(i+1,j)]
# print("\n".join("".join(line) for line in lines))
# print(bs)
# print(len(bs))
# print(s)
print(g)
from functools import cache
@cache
def dfs(u):
neighbours = g.get(u, [])
if len(neighbours) == 0:
return 1
res = 0
for n in neighbours:
res += dfs(n)
return res
print(dfs((0, lines[0].index("|"))))