🎄⌨️ Advent of Code 2018

My rules of play
  1. I’m going to try to proceed through the puzzles in order and to get correct solutions for all of them.
  2. No looking at the daily solution megathread until after I have completely solved both parts of that day’s problem.
  3. I avoid perusing through any discussion about other peoples’ approaches at least until I have constructed a first-effort solution of my own.
  4. The input for each day’s puzzle will saved in a separate file. Solution programs must read and parse this input rather than having it hardcoded in.
  5. Solution programs will include unit tests demonstrating that the code produces the accepted answer.