DEV Community is a community of 636,824 amazing developers

We're a place where coders share, stay up-to-date and grow their careers.

Advent of code - Day 10

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)
``````