#!/usr/bin/python3 # mari von steinkirch @2013 # steinkirch at gmail def lattice_paths(squares): gridsize = squares+1 grid = [[0 for i in range(gridsize)] for j in range(gridsize)] row, col = 0, 0 while col < gridsize: while row < gridsize: if row == 0 and col == 0: grid[row][col] = 1 else: if row == 0 and col != 0: grid[row][col] += grid[row][col-1] elif row != 0 and col == 0: grid[row][col] += grid[row-1][col] else: grid[row][col] += grid[row][col-1] + grid[row-1][col] row += 1 row = 0 col += 1 return grid[gridsize-1][gridsize-1] def main(): import time start = time.time() assert(lattice_paths(2) == 6) print(lattice_paths(20)) elapsed = (time.time() - start) print('Tests Passed!\n It took %s seconds to run them.' % (elapsed)) if __name__ == '__main__': main()