Starting in the top left corner of a 2×2 grid, there are 6 routes (without backtracking) to the bottom right corner.
How many routes are there through a 20×20 grid?
let rec factorial(n:bigint) = if n <= 1I then 1I else n * factorial(n-1I) let combo n k = factorial(n) / (factorial(k) * factorial(n-k)) let answer = combo 40I 20I
It took me a while to figure out that this problem is actually a simple combination problem – consider a X by Y grid, any route from the top left to the bottom right corner without backtracking must have travelled Right X number of times and Down Y number of times. In the case of the original example:
RRDD, RDRD, RDDR, DRRD, DRDR, DDRR
This also means that all routes have a total of X + Y steps, and the number of routes is equal to the number of ways you can pick X number of R moves out of X + Y, i.e.
where n = X + Y and k = X.
I’m an AWS Serverless Hero and the author of Production-Ready Serverless. I have run production workload at scale in AWS for nearly 10 years and I have been an architect or principal engineer with a variety of industries ranging from banking, e-commerce, sports streaming to mobile gaming. I currently work as an independent consultant focused on AWS and serverless.
Here is a complete list of all my posts on serverless and AWS Lambda. In the meantime, here are a few of my most popular blog posts.
- Lambda optimization tip – enable HTTP keep-alive
- You are thinking about serverless costs all wrong
- Many faced threats to Serverless security
- We can do better than percentile latencies
- I’m afraid you’re thinking about AWS Lambda cold starts all wrong
- Yubl’s road to Serverless
- AWS Lambda – should you have few monolithic functions or many single-purposed functions?
- AWS Lambda – compare coldstart time with different languages, memory and code sizes
- Guys, we’re doing pagination wrong