Robert A. Uhl

Advent of Code 2018, day 1

I’ve decided to participate in the Advent of Code this year. The idea is that each day two simple puzzles are released, and folks use their favourite programming language to solve them. Folks compete to be the first person to submit a solution (only the first 100 count for points, though). Following Javier Olaechea’s example, I’ll track each day’s solution and post notes here.

Sum numbers

I decided to just drop the input in as a string. I thought about encoding it in Base64 or hex, but since it already is a string, why not just be simple about it?

Fortunately, the numbers coïncidentally are acceptable input to READ, so I was easily able to just read each from the string and let the standard library do the hard work.

Sum repeatedly, looking for the first repeated sum

My first version (unshown) used a list instead of a vector; this was inefficient, though, since NTH & LENGTH of a list are O(n), while AREF & LENGTH of a vector are O(1). This didn’t make much absolute difference (about ⅓ of a second run time), but it made a lot of relative difference: the less-efficient version took 5¼ times as long to run. I’m not really going for performance on these solutions, but in this case I think it’s a good habit.

The hash table is another example of just letting the standard library do the work.