Description for today’s challenge is here.
First, let’s capture what an ingredient is in our model:
Notice that we’ve also added the + and * operators to make combining different ingredients and multiplying by quantity easier when we mix them together to make and score a cake:
The input for this challenge looks like the following:
Sprinkles: capacity 2, durability 0, flavor -2, texture 0, calories 3
Butterscotch: capacity 0, durability 5, flavor -3, texture 0, calories 3
Chocolate: capacity 0, durability 0, flavor 5, texture -1, calories 8
Candy: capacity 0, durability -1, flavor 0, texture 5, calories 8
so let’s parse them into our model:
here I have reused the same Regex active pattern as Day 7 to parse each line.
Next, from the list of ingredients, we need to work out all combinations of them that add to a total of 100 ingredients being used:
From the above code, accN means the total number of ingredients accumulated so far – it saves me from having to calculate it each time. For each kind of ingredients, we may include 0 to 100 of it – 0 = don’t use this ingredient in the cake; 100 = make the cake out of only this ingredient. In hindsight, based on the data, you can’t make a cake with a non-zero score if you have 100 of any ingredient as each ingredient has a negative value for one of its attributes.
Finally, for each combination, make and score the cake and find the highest score:
Not much needs to change here, except we need to filter out cakes whose calories count is not 500:
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