Are you participating in the Advent of code this year?
If you don't know what the advent of code is, it's a website where you'll find a daily challenge (every day it gets harder). It's a really fun event, you should participate!
I try to solve the exercises using either JavaScript or TypeScript and will share my solutions daily (with one day delay so no one can cheat!). I only share the solution for the second part.
I'm already happy I managed to finish it. I know there are some incredible solutions out there (a colleague of mine solved is with a math equation 🤯), but all I could do was a brute-force. As I often say, IIWIW (If It Works It Works)!
Here is my solution for day #10:
const cache = []; function valueFor(code, currentValue) { if (cache[currentValue]) return cache[currentValue]; cache[currentValue] = resolve(code, currentValue); return cache[currentValue]; } function resolve(code, currentValue = 0) { if (!code.length) return 1; const [first, second, third] = code; let result = 0; if (first - currentValue > 0 && first - currentValue <= 3) result += valueFor(code.slice(1), first); if (second - currentValue > 0 && second - currentValue <= 3) result += valueFor(code.slice(2), second); if (third - currentValue > 0 && third - currentValue <= 3) result += valueFor(code.slice(3), third); return result; } resolve(input) Feel free to share your solution in the comments!
Photo by Markus Spiske on Unsplash
Top comments (0)