Description for today’s challenge is here.
This is a modified version of the Day 6 challenge, with a twist of course.
So, we’ll start by creating a 100×100 2D array to represent our grid of lights. As per the instruction, we’ll read the input and use # to set the original state of a light to ON, and . to set the original state of a light to OFF.
Next, let’s add a function to count the number of neighbours that are ON, whilst taking into account that lights on the edge of the grid won’t have all 8 neighbours:
Then we’ll simulate 100 steps, each step would use the state from the previous step in a fold:
Finally, count the number of lights that are ON in the state after 100 steps:
All else stays the same, we just need to inject additional logic to check if the light is one of the corner lights in a few places.
First, let’s add a function to determine if a light is in the corner:
and now we need to use it when setting the initial state for our grid:
as well as when we step from one state to the next:
and that’s it. After you made these couple of changes, all the rest of the code from Part 1 would work like before.
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