-
Notifications
You must be signed in to change notification settings - Fork 0
/
RosalindRabbits.py
53 lines (45 loc) · 1.09 KB
/
RosalindRabbits.py
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
__author__ = 'ssen'
import sys
def fibonacci(n, k):
if (n<=2):
return 1
retVal = fibonacci(n-1,k) + k*fibonacci(n-2,k)
return retVal
def fibonacciDeathV2Loop(n, m, born, mature, dying):
if n==0:
born[0] = 1
x = []
for i in range(m-1):
x.append(long(0))
mature[0]=x
dying[0]=long(0)
return long(1)
matureTotal = long(0)
for i in range(m-1):
matureTotal += mature[n-1][i]
matureTotal += dying[n-1]
born.append(matureTotal)
x = [long(0)]
x[0]=born[n-1]
for i in range(1,m-1):
x.append(mature[n-1][i-1])
mature.append(x)
dying.append(mature[n-1][m-2])
total = long(0)
for i in range(m-1):
total += mature[n][i]
total += dying[n] + born[n]
return total
def fibonacciDeathV2(n,m):
n = n-1
m=m-1
born = [long(0)]
mature = [[]]
dying = [long(0)]
retval = long(0)
for i in range(n+1):
retval = fibonacciDeathV2Loop(i,m,born, mature, dying)
print retval
print
return retval
print fibonacciDeathV2(89,17)