My solutions to these awesome puzzles. To run the code, you need Node v6+.
In the root run:
npm start <day?>
If you skip the day
parameter it will run current day of December 2018 (given that the date is less than 26).
DISCLAIMER: The code is mostly optimized for speed and readability/clarity so it is more verbose than it could be. But sometimes readability is sacrificed for shortness too. There is no ideal solution for any of the tasks, so I tried to find a good balance between all the criteria.
MIT