22 lines
622 B
Python
22 lines
622 B
Python
|
from math import factorial
|
||
|
|
||
|
|
||
|
def get_number_of_routes(n):
|
||
|
"""
|
||
|
There are n down and n right moves which means 2 * n moves
|
||
|
in total. All permutations are calculated with (2n)!. Next redundant
|
||
|
moves have to be canceled out. The combinations for only down moves
|
||
|
or only right moves would (if they were different symbols) be n!.
|
||
|
Hence, the denominator is (n!)^2.
|
||
|
"""
|
||
|
return factorial(2 * n) // (factorial(n) * factorial(n))
|
||
|
|
||
|
|
||
|
def euler_015():
|
||
|
return get_number_of_routes(20)
|
||
|
|
||
|
|
||
|
assert(get_number_of_routes(2) == 6)
|
||
|
assert(euler_015() == 137846528820)
|
||
|
print("e015.py: {}".format(euler_015()))
|