Skip to content

Latest commit

 

History

History
617 lines (531 loc) · 59.8 KB

README.md

File metadata and controls

617 lines (531 loc) · 59.8 KB

Advent Of Code

Stars Earned By Year

  • 2022 - WIP
  • 2021 - 50 stars
  • 2020 - 50 stars
  • 2019 - 50 stars
  • 2018 - 50 stars
  • 2017 - 50 stars
  • 2016 - 50 stars
  • 2015 - 50 stars

2022

Day Comment Python Go
Day 01 Summing lists, max N Python Go
Day 02 Rock Paper Scissors Python
Day 03 Overlapping strings Python
Day 04 Overlapping ranges Python
Day 05 Stack Ops, Parsing Python
Day 06 Sliding Window Python
Day 07 Filesystem Size Calc Python
Day 08 Line of Sight Trees Python
Day 09 Rope, or Snake Game Python
Day 10 ASM and CRT Scanning Python
Day 11 Dealing w/ Large Numbers Python
Day 12 Maze with Height Python
Day 13 Sorting Nested Lists Python
Day 14 Flowing Sand Python
Day 15 Sensors and Beacons Python
Day 16 Opening Pipes Maze Python
Day 17 Tetris Python
Day 18 3D Voxels Surface Python
Day 19 Optimize Build Order Python

Hardest Problems 2022

  • 16: Opening Pipes Maze
  • 17: Tetris
  • 19: Optimize Build Order

2021

Day Comment Python Elixir
Day 01 Sliding range windows Python Elixir
Day 02 Position tracking Python Elixir
Day 03 Binary counting and filtering Python Elixir
Day 04 Bingo cards Python
Day 05 Line intersections Python
Day 06 Exponential fish growth Python

2020

Day Comment Python Elixir
Day 01 3SUM Python Elixir
Day 02 Password Rule Check Python Elixir
Day 03 Slope, Grid, Mod Python Elixir
Day 04 Parsing, Rule Checks Python Elixir
Day 05 Binary Conversion Python Elixir
Day 06 Grouping and Counting Python Elixir
Day 07 Recursive Bags Python Elixir
Day 08 Simple Computer Python Elixir
Day 09 Summing Ranges Python
Day 10 Dynamic Programming Python
Day 11 Cellular Automata Python
Day 12 Logo with 2 actors Python
Day 13 Rings and Modular Arithmetic Python
Day 14 Unstable Bit Masks Python
Day 15 Van Eck sequence Python
Day 16 Deduce correct fields Python
Day 17 4d Game of Life Python
Day 18 Parsing Math Equations Python
Day 19 Grammar Rules Python
Day 20 Jigsaw Puzzle Python
Day 21 Ingredient Deduction Python
Day 22 Recursive Card Game Python
Day 23 Large Circular Linked List Python
Day 24 Hexagon Game of Life Python
Day 25 Diffie-Hellman Python

Hardest Problems 2020

  • 19 - Grammar Rules
  • 20 - Jigsaw Puzzle
  • 23 - Large Circular Linked List

Favorite Problems 2020

  • 20 - Jigsaw Puzzle

Personal Stats 2020

      --------Part 1--------   --------Part 2--------
Day       Time   Rank  Score       Time   Rank  Score
 25   00:12:13    538      0   00:12:18    430      0
 24   00:16:03    725      0   00:33:29    744      0
 23   00:31:06   1084      0   00:42:20    123      0
 22   00:09:53   1063      0   00:47:12   1173      0
 21   00:14:55    235      0   00:26:05    438      0
 20   00:37:15    769      0   16:56:12   5223      0
 19   00:52:56   1522      0   02:12:04   1839      0
 18   19:59:59  18016      0   20:05:30  16137      0
 17   00:26:21    952      0   00:32:27    906      0
 16   00:24:11   2685      0   00:42:49    901      0
 15   00:13:17    949      0   00:22:14   1076      0
 14   00:48:41   4432      0   01:15:23   3140      0
 13   00:12:15   2473      0   00:33:39    603      0
 12   00:08:52    584      0   00:18:36    568      0
 11   00:23:20   1508      0   01:03:53   3103      0
 10   00:06:26    721      0   00:26:32   1167      0
  9   00:12:14   2907      0   00:20:35   2376      0
  8   00:08:01   1502      0   00:15:18    926      0
  7   00:23:36   1591      0   00:44:23   2092      0
  6   00:05:37   1403      0   00:12:05   1681      0
  5   00:09:30   1101      0   00:11:45    748      0
  4   00:12:24   2122      0   00:29:39   1234      0
  3   00:15:47   3901      0   00:17:54   2655      0
  2   00:12:22   2847      0   00:16:17   2313      0
  1   00:09:02   1554      0   00:15:58   2241      0

Overall Thoughts 2020

This year was a little bit easier than the previous years. I believe the creator was trying to give us a break, but, I enjoy the difficult problems. Bring on the challenge in 2021.

However, I'm still thankful for the event, it still continues to be a favorite part of the holiday season for me.

2019

Day Intcode Comment Python Elixir Go Others
Day 01 Math and iteration Python Elixir (test) Go (test) See Below
Day 02 Simple VM Python Elixir Go React Ruby
Day 03 Wire intersection Python Elixir Go Ruby
Day 04 Password rules Python (test) Elixir (test) Go (test)
Day 05 VM Parameter Mode, I/O, Flow Python (test) Elixir (test) Go (test) React
Day 06 Orbital Tree Python
Day 07 Connecting 5 VMs Python (test) Elixir (test) Go (test)
Day 08 Decoding layered image format Python
Day 09 VM Relative Mode Python (test) Elixir (test) Go (test)
Day 10 Line-of-sight asteroids Python (test)
Day 11 Painting Robot on VM Python (test) Elixir (test) Go (test)
Day 12 Multi-dimensional Cycle detection Python (test)
Day 13 Breakout game on VM Python (test) Elixir (test) Go (test)
Day 14 Resource manufacturing / dependency Python (test)
Day 15 Mapping via limited sight droid on VM Python (test)
Day 16 Discrete FFT Python
Day 17 Mapping and compression algo Python (test)
Day 18 Seemingly O(n!) maze with doors and keys Python
Day 19 Mapping Tractor Beam Python (test)
Day 20 Recursive maze with portals Python (test)
Day 21 SpringScript assembly w/ registers Python (test)
Day 22 Number Theory Python (test)
Day 23 Networking 50 VMs Python (test) Elixir (test)
Day 24 Recursive/3d game of life Python (test)
Day 25 Text Adventure on VM Python

Hardest Problems 2019

  • 18 - Seemingly O(n!) maze with doors and keys
  • 22 - Number Theory (Shuffling a trillion card deck a trillion times)
  • 16 - Discrete FFT over modulo
  • 14 - Resource Chains

Favorite Problems 2019

  • 25 - Text Adventure on VM
  • 23 - Networking 50 VMs
  • 18 - Seemingly O(n!) maze with doors and keys
  • IntCode in general

Day 01 extra languages 2019

Personal Stats 2019

You have 31 points.

      -------Part 1--------   -------Part 2--------
Day       Time  Rank  Score       Time  Rank  Score
 25   01:40:11   560      0   01:40:20   422      0
 24   00:18:26   298      0   01:02:55   257      0
 23   01:02:09   671      0   01:48:33   734      0
 22   00:27:41   437      0   15:47:20  1190      0
 21   00:21:02   194      0   00:30:40    70     31
 20   00:46:06   282      0   01:19:24   244      0
 19   00:08:46   448      0   01:00:23   465      0
 18   13:36:33  1268      0   14:08:27   905      0
 17   00:11:49   276      0   01:31:57   496      0
 16   00:26:09   627      0   11:52:37  2207      0
 15   01:26:14   627      0   01:38:52   522      0
 14   02:40:55  1201      0   03:10:35  1029      0
 13   00:05:56   414      0   00:33:44   380      0
 12   00:14:20   221      0   01:02:39   449      0
 11   00:16:44   266      0   00:21:30   221      0
 10   01:07:41  1359      0   01:50:30   814      0
  9   00:46:35   962      0   00:47:09   917      0
  8   00:23:33  1660      0   00:31:37  1090      0
  7   00:16:31   415      0   00:45:54   288      0
  6   00:11:41   461      0   00:18:11   319      0
  5   00:24:13   369      0   01:07:37  1261      0
  4   00:07:25   856      0   00:32:10  2060      0
  3   00:36:22  1230      0   00:44:44   954      0
  2   00:14:30   944      0   00:19:19   582      0
  1   00:15:43  1660      0   00:15:53  1041      0

Overall Thoughts 2019

This was my second advent of code; I enjoyed it greatly and plan to continue with the event in the future. Some problems were difficult (18 and 22), but completing them means you learned something.

I loved the focus on IntCode: On days 2, 7, 5, and 9 we built a working Virtual Machine that ran problems in IntCode. Every other day after that, our challenge involved interacting with an IntCode program in one way or another. This creative approach leant to problems and inputs that we would not be able to see with basic text files (For example, exploring a maze by issuing commands to a robot.)

My primary language in 2018 was Ruby, in 2019 it was Python. I've been learning Python this year, and completing all 25 programs in it was a way for me to feel that I have a general grasp on the language. I think that it's a great language for these types of problems, with a rich set of data structures baked in. (Disappointly, the heap/priority queue does not allow for reassignment of priority for items already in the queue.) I did miss Ruby's allowances for functional-like programming, though. Since Python is the #2 language in the world currently, I feel like I'm speaking the same language as the rest of the world.

I also used Elixir and Go. Elixir continues to be the functional language that I know the best and I'm most productive with. However, with these sorts of problems, the functional approach is not always the easiest, in my opinion. Functional works well as another tool in my toolbox, and not "the best and only way" to program.

Go blew me away with its speed (regularly 40x faster than python), and it's nowhere near as difficult to use as C, C++ or Rust. It's a fantastic "get stuff done" language, with a distribution and deployment story much nicer than Python's, and I'll be looking forward to use it more in the future. Of course, I miss some constructs like map, filter, etc while using it.

2018

Day Comment Ruby Elixir Others
Day 01 Sum numbers, detect repeat (Part 1) (Part 2)
Day 02 String comparison Elixir JavaScript
Day 03 Overlapping grid squares Ruby Elixir
Day 04 Time ranges Elixir
Day 05 String "reaction", O() matters Ruby Elixir (test)
Day 06 Grid, voronoi, manhattan Ruby Elixir
Day 07 Task dependency and simulation Ruby Elixir
Day 08 Recursive Parsing Ruby
Day 09 Huge linked list Ruby
Day 10 Collapsing stars form a message Ruby
Day 11 Summed area table Ruby
Day 12 Cellular Automata Ruby
Day 13 Minecart grid collisions Ruby
Day 14 Large array, modulo Ruby
Day 15 Goblin vs Elves battle Ruby
Day 16 VM, Reverse engineer opcodes Ruby
Day 17 Flowing Water Ruby
Day 18 Cellular automata, cycle detection Ruby
Day 19 VM Disassembly Ruby
Day 20 Regexp maze Ruby
Day 21 VM Reverse engineering/hacking Ruby
Day 22 Maze with changing tools Ruby
Day 23 Nanobots, overlapping octohedrons Ruby
Day 24 Virus Battle Ruby
Day 25 Constellation groups Ruby

Hardest Problems 2018

  • 15: Goblins vs Elves
  • 17: Flowing water
  • 19: Disassembly
  • 21: VM Reverse Engineering
  • 23: Nanobots: octohedron vision range
  • 24: Virus battle

Favorite Problems 2018

  • 15: Goblins vs Elves
  • 17: Flowing water
  • 24: Virus Battle

Personal Stats 2018

      --------Part 1--------   --------Part 2--------
Day       Time   Rank  Score       Time   Rank  Score
 25   00:37:43    459      0   00:38:20    337      0
 24   01:58:24    326      0   02:15:09    281      0
 23   10:19:13   2476      0   17:05:58   1131      0
 22   00:50:38    561      0   12:42:24   1176      0
 21   20:01:15   2302      0   20:37:18   2022      0
 20   21:05:02   2080      0   21:05:59   1941      0
 19   19:04:42   3334      0   21:56:49   2589      0
 18   20:57:51   4123      0   22:07:21   3783      0
 17   22:21:38   2259      0   22:23:48   2234      0
 16   10:35:35   2642      0   11:30:16   2414      0
 15   20:17:14   1888      0   20:41:13   1720      0
 14   22:05:04   5787      0   22:44:50   5256      0
 13   21:58:28   5329      0   22:32:23   4756      0
 12   00:32:34    551      0   00:43:27    320      0
 11   10:16:12   6233      0   10:29:15   5116      0
 10   00:35:45    612      0   00:37:19    606      0
  9   00:35:05    574      0   01:19:32    684      0
  8   00:20:03    625      0   00:26:24    471      0
  7   00:16:35    320      0   00:40:45    242      0
  6   00:41:51    591      0   00:49:18    371      0
  5   00:20:58   1184      0   00:32:13   1010      0
  4   22:33:52  13220      0   22:48:37  12654      0
  3   00:22:38   1080      0   00:31:53   1031      0
  2   00:10:19    839      0   00:16:19    512      0
  1   16:56:46  21119      0   17:59:18  17426      0

Overall Thoughts 2018

(Placeholder)

2017

Day Comment Python Elixir Go Others
Day 01 String rotation, comparing Python (test) Elixir (test) Go (test) See below
Day 02 Basic Math Go (test)
Day 03 2d grid spiral Python (test)
Day 04 Password Checking Elixir
Day 05 VM-Like Jumps Python Elixir Go (test) Ruby
Day 06 ? Go (test)
Day 07 Topological/Recursive Trees Go
Day 08 Assembly and Registers Go
Day 09 Recursive Character Parsing Go (test)
Day 10 Hash Function Python (test)
Day 11 Hex Grid Elixir (test)
Day 12 Connected components Go (test)
Day 13 Simulation / Modulo Elixir (test)
Day 14 Hash, Grid, Connected Regions Python (test)
Day 15 PRNG Generators, Bitwise Math Elixir (test)
Day 16 Composing permutations Go
Day 17 Ring, Modulo Python
Day 18 2 VMs Communicating Elixir
Day 19 Navigating a simple maze Python
Day 20 Stars moving with acceleration Python
Day 21 Grid split, combine, rotation, flip Python
Day 22 Cellular automata, direction Python
Day 23 Disassembly, optimization Elixir
Day 24 Recursion Python
Day 25 Turing Machine Python

Hardest Problems 2017

  • 23: Disassembly
  • 21: Grid split, combine, rotate, flip

Favorite Problems 2017

  • 18: 2 VMs Communicating
  • 21: Grid split, combine, rotate, flip

Day 01 extra languages 2017

Personal Stats 2017

      --------Part 1--------   --------Part 2--------
Day       Time   Rank  Score       Time   Rank  Score
 25       >24h   5805      0       >24h   4850      0
 24       >24h   5517      0       >24h   5443      0
 23       >24h   6296      0       >24h   5401      0
 22       >24h   6253      0       >24h   6113      0
 21       >24h   5909      0       >24h   5823      0
 20       >24h   7667      0       >24h   7108      0
 19       >24h   8121      0       >24h   8008      0
 18       >24h   9005      0       >24h   7442      0
 17       >24h   9542      0       >24h   8977      0
 16       >24h  10226      0       >24h   9319      0
 15       >24h  10426      0       >24h  10144      0
 14       >24h   9792      0       >24h   9064      0
 13       >24h  11755      0       >24h  10739      0
 12       >24h  12663      0       >24h  12119      0
 11       >24h  12945      0       >24h  12445      0
 10       >24h  14074      0       >24h  12637      0
  9       >24h  15631      0       >24h  15180      0
  8       >24h  17907      0       >24h  17348      0
  7       >24h  20687      0       >24h  15836      0
  6       >24h  23000      0       >24h  21891      0
  5       >24h  26443      0       >24h  24917      0
  4       >24h  29919      0       >24h  26769      0
  3       >24h  31602      0       >24h  23129      0
  2       >24h  45282      0       >24h  38284      0
  1       >24h  55024      0       >24h  45454      0

Overall Thoughts 2017

(Placeholder)

2016

Missing Reflections: 4, 5, 6

Day Comment Python Elixir
Day 01 Turning, Stepping Python
Day 02 Keypad Navigation Elixir
Day 03 Column Processing Elixir
Day 04 Shift Chipher Elixir
Day 05 MD5 Cracking Elixir
Day 06 Repetition Code Elixir
Day 07 Adv string search Elixir
Day 08 Grid manipulation Python
Day 09 String Expansion Elixir
Day 10 Coordinating Agents Elixir
Day 11 Missionaries and cannibals Elixir
Day 12 Assembunny VM Elixir
Day 13 BFS through algo maze Elixir
Day 14 MD5 / One-time pad Elixir
Day 15 Modulo / Chinese Remainder Elixir
Day 16 Dragon Curve Elixir
Day 17 MD5 Maze, Longest Path Elixir
Day 18 1d cellular automata Elixir
Day 19 Josephus Problem Elixir
Day 20 Overlapping IP ranges Elixir
Day 21 String manipulation Elixir
Day 22 Swap Position Maze Elixir
Day 23 VM Disassembly / Optimize Elixir
Day 24 Collecting items in maze Elixir
Day 25 VM Input/Output searching Elixir

Hardest Problems 2016

  • Day 11: Missionaries and Cannibals
  • Day 19: Josephus Problem
  • Day 22: Swap Position Maze

Favorite Problems 2016

  • Day 24: Collecting items in maze

Personal Stats 2016

      --------Part 1--------   --------Part 2--------
Day       Time   Rank  Score       Time   Rank  Score
 25       >24h   2431      0       >24h   2043      0
 24       >24h   2397      0       >24h   2378      0
 23       >24h   2861      0       >24h   2683      0
 22       >24h   3379      0       >24h   2466      0
 21       >24h   3529      0       >24h   3290      0
 20       >24h   3938      0       >24h   3739      0
 19       >24h   4144      0       >24h   3382      0
 18       >24h   4023      0       >24h   3985      0
 17       >24h   3676      0       >24h   3575      0
 16       >24h   4391      0       >24h   4249      0
 15       >24h   4294      0       >24h   4258      0
 14       >24h   4443      0       >24h   4232      0
 13       >24h   4506      0       >24h   4268      0
 12       >24h   5377      0       >24h   5296      0
 11       >24h   3703      0       >24h   3440      0
 10       >24h   6168      0       >24h   6038      0
  9       >24h   7930      0       >24h   6586      0
  8       >24h   8633      0       >24h   8449      0
  7       >24h  10048      0       >24h   8880      0
  6       >24h  11636      0       >24h  11224      0
  5       >24h  11479      0       >24h  10868      0
  4       >24h  12360      0       >24h  11595      0
  3       >24h  15685      0       >24h  13775      0
  2       >24h  17004      0       >24h  14917      0
  1       >24h  21727      0       >24h  16407      0

Overall Thoughts 2016

This was my 4th Advent of Code; after completing years 2018 and 2019 during the event, I went back to do 2017 and now 2016 as I'm attempting to get all stars.

Overall, the basic themes of Advent of Code are getting easier to me, which means I've grown as a programmer. Searching a graph with a special condition, implementing a VM, or knocking out some cellular automata doesn't really take much thinking anymore.

This was the first year I organized differently, by making a single program that can run all days instead of a program for each day. I prefer it this way, even if each day is no longer stand-alone. It makes for easier code reuse, and it's extremely satisfying to run several days worth of solutions at once.

I committed myself to doing all of the problems in Elixir. I thought it would be painful, but I started to prefer doing BFS in Elixir than say, Python, which I didn't expect at all! My functional programming chops definitely increased by doing this year in Elixir.

2015

Day Comment Python Elixir
Day 01 Character Iteration Python Elixir
Day 02 Simple Arithmetic Python Elixir
Day 03 Grid Navigation Python Elixir
Day 04 MD5 Leading Zeros Python Elixir
Day 05 String Rules Python
Day 06 Subgrid manipulation Python
Day 07 Bitwise Logic, Ordering Python
Day 08 Escaping Strings Python
Day 09 Travelling Salesman Python
Day 10 Look-and-Say Python
Day 11 String incrementing, rules Python
Day 12 JSON Parsing Python
Day 13 Optimal Seating Python
Day 14 Racing Go-Rest Sequences Python
Day 15 Cookie Optimization Python
Day 16 Logical elimination Python
Day 17 Combinations of containers Python
Day 18 Game of Life Python
Day 19 String Expansion Search Python
Day 20 Number Theory, Divisors Python
Day 21 RPG Battle, Item optimization Python
Day 22 RPG Battle, Ongoing Spells, Minimize Mana Python
Day 23 Simple Assembly Language, Collatz Python
Day 24 Splitting numbers into equal groups Python
Day 25 Mathy increasing sequence Python

Hardest Problems 2015

  • 19 - String expansion search
  • 22 - RPG Battle, Ongoing Spells, Minimize Mana

Favorite Problems 2015

  • 22 - RPG Battle, Ongoing Spells, Minimize Mana

Personal Stats 2015

      --------Part 1--------   --------Part 2--------
Day       Time   Rank  Score       Time   Rank  Score
 25       >24h   4044      0       >24h   2873      0
 24       >24h   3422      0       >24h   3366      0
 23       >24h   4123      0       >24h   4091      0
 22       >24h   3338      0       >24h   3235      0
 21       >24h   4570      0       >24h   4439      0
 20       >24h   5088      0       >24h   4732      0
 19       >24h   5576      0       >24h   4138      0
 18       >24h   5899      0       >24h   5803      0
 17       >24h   6266      0       >24h   6122      0
 16       >24h   6956      0       >24h   6635      0
 15       >24h   6516      0       >24h   6403      0
 14       >24h   8203      0       >24h   7531      0
 13       >24h   7501      0       >24h   7372      0
 12       >24h   9175      0       >24h   7735      0
 11       >24h   9010      0       >24h   8845      0
 10       >24h  10652      0       >24h  10153      0
  9       >24h   9678      0       >24h   9423      0
  8       >24h  11345      0       >24h  10603      0
  7       >24h  11946      0       >24h  11420      0
  6       >24h  17431      0       >24h  16430      0
  5       >24h  22127      0       >24h  18417      0
  4       >24h  22867      0       >24h  21658      0
  3       >24h  27322      0       >24h  24613      0
  2       >24h  33816      0       >24h  29589      0
  1       >24h  53186      0       >24h  41194      0

Overall Thoughts 2015

With 2015 complete, I've joined the 250 stars club! (All AoC stars available as of Jan 2020). I'll be ready for AoC 2020, but I'll enjoy the break for now.

Misc

Created:       Mon 02 Dec 2019 05:12:40 PM CST
Last Modified: Wed 08 Feb 2023 10:39:30 PM CST