Brett /
CalculateSteps(:source lang=python:)
import sys def Calculate(n): Calculates no of ways steps can be climbed if n == 1: return 1 elif n == 2: return 2 elif n == 3: return 4 Count=[0]*4 Count[0],Count[1],Count[2] = 1,2,4 shifter, a, b, c, d = 0, 0, 0, 0, 0 for i in xrange(3,n): a, b, c, d = shifter%4, (shifter+1)%4, (shifter+2)%4, (shifter+3)%4 Count[d] = Count[a] + Count[b] + Count[c] shifter = shifter+1 return Count[d] cache = {} def bp_calc(n): if n == 1: return 1 if n == 2: return 2 if n == 3: return 4 global cache if n in cache: return cache[n] sum = 0 for i in range(n-3, n): sum = sum + bp_calc(i) cache[n] = sum return sum def bp_calc2(n): c = {} c[1] = 1 c[2] = 2 c[3] = 4 for i in range(4, n+1): c[i] = c[i-1] + c[i-2] + c[i-3] return c[n] print Calculate(int(sys.argv[1])) print bp_calc(int(sys.argv[1])) (:sourceend:) |