Elegance and explanatory comments are minimal, since I generally wrote my code as fast as possible, in the spirit of competition. But in some cases I didn't have a chance to sit down and start a puzzle for a while — maybe even the next day.
--------Part 1-------- --------Part 2-------- Day Time Rank Score Time Rank Score 25 03:34:57 1207 0 03:36:08 1066 0 24 00:22:13 170 0 00:23:31 131 0 23 16:48:40 3305 0 22:41:25 2629 0 22 00:14:52 116 0 00:23:12 132 0 21 01:50:30 424 0 01:51:16 395 0 20 00:17:21 241 0 00:26:26 169 0 19 13:50:09 3642 0 13:54:03 3564 0 18 00:11:28 72 29 00:39:01 91 10 17 00:05:26 57 44 00:27:10 324 0 16 00:08:35 103 0 00:22:01 69 32 15 00:13:24 444 0 00:23:48 514 0 14 00:41:50 843 0 01:13:21 596 0 13 00:25:44 587 0 01:12:43 712 0 12 00:08:38 201 0 00:23:28 503 0 11 00:14:34 269 0 00:19:48 284 0 10 00:32:55 572 0 00:51:40 409 0 9 00:47:12 978 0 00:51:39 908 0 8 00:10:27 250 0 00:11:36 236 0 7 00:12:43 445 0 02:15:42 1294 0 6 00:25:46 973 0 00:30:34 919 0 5 13:17:02 9942 0 14:03:40 9770 0 4 >24h 14585 0 >24h 13304 0 3 >24h 16397 0 >24h 11971 0 2 >24h 24748 0 >24h 21417 0 1 >24h 31029 0 >24h 26252 0