Skip to content

Commit 5a5d53e

Browse files
committed
Added Session02 homework
1 parent 8c93ca5 commit 5a5d53e

File tree

2 files changed

+61
-0
lines changed

2 files changed

+61
-0
lines changed

session02/ack.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
2+
def ack(m,n):
3+
"""Return Ackerman number"""
4+
if m == 0:
5+
return n + 1
6+
if n == 0:
7+
return ack(m - 1, 1)
8+
return ack(m - 1, ack(m, n - 1))
9+
10+
if __name__ == '__main__':
11+
assert ack(0,4) == 5
12+
assert ack(1,4) == 6
13+
assert ack(0,0) == 1
14+
assert ack(2,2) == 7
15+
assert ack(3,4) == 125
16+
assert ack(4,0) == 13
17+
assert ack(3,2) == 29
18+
19+
print "All Tests Pass"

session02/series.py

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
2+
def fibonacci(n):
3+
"""Return Fibonacci number"""
4+
if n <= 1:
5+
return n
6+
else:
7+
return fibonacci(n-1) + fibonacci(n-2)
8+
9+
def lucas(n):
10+
"""Return Lucas number"""
11+
if n == 0:
12+
return 2
13+
if n == 1:
14+
return 1
15+
return lucas(n-1) + lucas(n-2)
16+
17+
def sum_series(n, x=0, y=1):
18+
"""Return either fibonacci or lucas numbers"""
19+
if x == 0 and y == 1:
20+
return fibonacci(n)
21+
elif x == 2 and y == 1:
22+
return lucas(n)
23+
else:
24+
return "Other Series"
25+
26+
if __name__ == '__main__':
27+
"""Test internal assertions about function calls"""
28+
assert fibonacci(6) == 8
29+
assert fibonacci(3) == 2
30+
assert fibonacci(30) == 832040
31+
32+
assert lucas(3) == 4
33+
assert lucas(5) == 11
34+
assert lucas(8) == 47
35+
assert lucas(12) == 322
36+
37+
assert sum_series(3) == 2
38+
assert sum_series(6) == 8
39+
40+
assert sum_series(3, 2, 1) == 4
41+
assert sum_series(5, 2, 1) == 11
42+
assert sum_series(8, 2, 1) == 47

0 commit comments

Comments
 (0)