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.
For day #6, I got super motivated. I stayed awake until the challenge release (6am in my timezone), so I could maybe manage to get ranked!
After 7 minutes, I submitted the part 1 (pretty good score IMO!)... Only to realise that most of the top 100 took less than a minute! I have no idea how they do this, but I'm still happy with my performance.
Anyway, here is my solution for day #6:
input .split(/\r?\n\r?\n/) .map((group) => group.split("\n")) .map((group) => group.filter(Boolean).map((answers) => answers.split(""))) .map((group) => { const record: Record<string, number> = {}; group.map((answers) => { answers.map((answer) => { record[answer] = record[answer] + 1 || 1; }); }); return Object.keys(record).filter((x) => record[x] === group.length) .length; }) .reduce((acc, v) => acc + v, 0); Feel free to share yours in the comments!
Photo by Markus Spiske on Unsplash
Top comments (0)