Skip to content

Commit 257219a

Browse files
committed
Merge pull request UWPCE-PythonCert#14 from pythonandme/session02
Merging for now -- re-submit if you want me to review any of this again. -Chris
2 parents 065e46d + 610eb1c commit 257219a

File tree

2 files changed

+114
-0
lines changed

2 files changed

+114
-0
lines changed
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
def ack (m, n):
2+
"""Return a value based on the Ackermann-Peter function."""
3+
4+
if m == 0:
5+
return n + 1
6+
elif m > 0 and n == 0:
7+
return ack(m-1, 1)
8+
elif m > 0 and n > 0:
9+
return ack(m-1, ack(m, n-1))
10+
elif m < 0 and n < 0:
11+
return None
12+
13+
if __name__ == "__main__":
14+
15+
assert ack(0,0) == 1
16+
assert ack(0,1) == 2
17+
assert ack(0,2) == 3
18+
assert ack(0,3) == 4
19+
assert ack(0,4) == 5
20+
21+
assert ack(1,0) == 2
22+
assert ack(1,1) == 3
23+
assert ack(1,2) == 4
24+
assert ack(1,3) == 5
25+
assert ack(1,4) == 6
26+
27+
assert ack(2,0) == 3
28+
assert ack(2,1) == 5
29+
assert ack(2,2) == 7
30+
assert ack(2,3) == 9
31+
assert ack(2,4) == 11
32+
33+
assert ack(3,0) == 5
34+
assert ack(3,1) == 13
35+
assert ack(3,2) == 29
36+
assert ack(3,3) == 61
37+
assert ack(3,4) == 125
38+
39+
print""
40+
print "All Tests Pass"
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
def fibonacci(n):
2+
"""Return the n value based on the Fibonacci series."""
3+
if n <= 0:
4+
return 0
5+
elif n == 1:
6+
return 1
7+
else:
8+
return fibonacci(n-1) + fibonacci(n-2)
9+
10+
def lucas(n):
11+
"""Return the n value in the Lucas Numbers."""
12+
if n <= 0:
13+
return 2
14+
elif n == 1:
15+
return 1
16+
else:
17+
return lucas(n-1) + lucas(n-2)
18+
19+
def sum_series(n, x=0, y=1):
20+
if n <= 0:
21+
return x
22+
elif n == 1:
23+
return y
24+
else:
25+
return sum_series(n-1, x, y) + sum_series(n-2, x, y)
26+
27+
if __name__ == "__main__":
28+
"""Validate that when an nth values are passed different positions are returned"""
29+
30+
# Validate Fibonacci tests pass successfully.
31+
assert fibonacci(0) == 0
32+
assert fibonacci(1) == 1
33+
assert fibonacci(2) == 1
34+
assert fibonacci(3) == 2
35+
assert fibonacci(4) == 3
36+
assert fibonacci(5) == 5
37+
assert fibonacci(6) == 8
38+
assert fibonacci(7) == 13
39+
40+
# Validate Lucas tests pass successfully.
41+
42+
assert lucas(0) == 2
43+
assert lucas(1) == 1
44+
assert lucas(2) == 3
45+
assert lucas(3) == 4
46+
assert lucas(4) == 7
47+
assert lucas(5) == 11
48+
assert lucas(6) == 18
49+
assert lucas(7) == 29
50+
51+
# Validate sum_series tests for Fibonacci pass successfully.
52+
53+
assert sum_series(0) == 0
54+
assert sum_series(1) == 1
55+
assert sum_series(2) == 1
56+
assert sum_series(3) == 2
57+
assert sum_series(4) == 3
58+
assert sum_series(5) == 5
59+
assert sum_series(6) == 8
60+
assert sum_series(7) == 13
61+
62+
# Validate sum_series tests for Lucas pass successfully.
63+
64+
assert sum_series(0) == 0
65+
assert sum_series(1) == 1
66+
assert sum_series(2) == 1
67+
assert sum_series(3) == 2
68+
assert sum_series(4) == 3
69+
assert sum_series(5) == 5
70+
assert sum_series(6) == 8
71+
assert sum_series(7) == 13
72+
73+
print ""
74+
print "All Tests Pass"

0 commit comments

Comments
 (0)