Advent of … — Day 3

Typescript

https://toot.cafe/@danbruegge/113587602136584312

I solved this one “early” in the morning. This one, was also a no-brainer.

Code

https://toot.cafe/@danbruegge/113588572520140901

This was a nice and fast one. I always enjoy playing with Regexp. Only Part 2 gave me a struggle, because of my thought process. I tend to do things much more complicated than they should be. :D

Here is a little example:

export function getDoMulCalls(input: string): any {
  const startRe = /^(.*?)don\'t\(\)/g;
  const middleRe = /do\(\)(.*?)don\'t\(\)/g;
  const endRe = /do\(\)(.*?)$/g;

  const startDos = Array.from(input.matchAll(startRe), match => match[1]);
  const middleDos = Array.from(input.matchAll(middleRe), match => match[1]);
  const endDos = Array.from(input.matchAll(endRe), match => match[1]).filter(endDo => !endDo.includes("don't()"));

  return [...startDos, ...middleDos, ...endDos].map(getMulCalls).flat();
}

This will not give you the solution to Part 2. I thought this was simple and clever at the same time. But I needed to start fresh and remove the cleverness from the code. Bonus, I've learned something new with JavaScript and Regexp. :)


47 of #100DaysToOffload

#log #adventOfCode #adventOfTypescript

Thoughts? Discuss...