Skip to content

Commit 7f3301a

Browse files
committed
refactor problem 15
1 parent abf4744 commit 7f3301a

File tree

1 file changed

+12
-25
lines changed

1 file changed

+12
-25
lines changed

15.rb

Lines changed: 12 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,21 @@
11
$cache = {}
22
def bfs(a, b)
3-
raise if a[0] > b[0] or a[1] > b[1]
4-
#if (b[0] - a[0] == 1 and b[1] == a[1]) or ( b[1] - a[1] == 1 and a[0] == b[0] )
5-
# return 1
6-
if a[0] == b[0]
7-
if b[1] - a[1] == 1
8-
1
9-
else
10-
$cache[[a[0], a[1] + 1]] = bfs([a[0], a[1] + 1], b) unless $cache.include?([a[0], a[1] + 1])
11-
$cache[[a[0], a[1] + 1]]
12-
end
13-
elsif a[1] == b[1]
14-
if b[0] - a[0] == 1
15-
1
16-
else
17-
$cache[[a[0] + 1, a[1]]] = bfs([a[0] + 1, a[1]], b) unless $cache.include?([a[0] + 1, a[1]])
18-
$cache[[a[0] + 1, a[1]]]
19-
end
3+
if (b[0] - a[0] == 1 and b[1] == a[1]) or ( b[1] - a[1] == 1 and a[0] == b[0] )
4+
1
5+
elsif a[0] == b[0]
6+
getpoint([a[0], a[1] + 1], b)
7+
elsif b[1] == a[1]
8+
getpoint([a[0] + 1, a[1]], b)
209
else
21-
22-
$cache[[a[0] + 1, a[1]]] = bfs([a[0] + 1, a[1]], b) unless $cache.include?([a[0] + 1, a[1]])
23-
$cache[[a[0], a[1] + 1]] = bfs([a[0], a[1] + 1], b) unless $cache.include?([a[0], a[1] + 1])
24-
25-
#bfs([a[0] + 1, a[1]], b) + bfs([a[0], a[1] + 1], b)
26-
$cache[[a[0] + 1, a[1]]] + $cache[[a[0], a[1] + 1]]
10+
getpoint([a[0] + 1, a[1]], b) + getpoint(([a[0], a[1] + 1]), b)
2711
end
2812
end
2913

14+
def getpoint(point, b)
15+
$cache[point] = bfs(point, b) unless $cache.include?(point)
16+
$cache[point]
17+
end
18+
3019

3120
p bfs([0, 0], [20, 20])
32-
#p bfs([0, 0], [1, 2])
33-
#p bfs([0, 0], [2, 2])
3421

0 commit comments

Comments
 (0)