Hey all, I am participating in the Advent of Code 2018 challenge in order to brush up on my ability to solve problems and write algorithms! My solutions will generally be written with C#, but I am also looking to use this challenge to get some experience writing with a different language (looking at Go, Ruby.)
Day 1 - C#
Day 2 - C#
Day 3 - C#
Day 4 - C#
Day 5 - C#
Day 6 - C#
Day 7 - C#
Day 8 - C#
Day 9 - Go
Day 10 - Java
Day 11 - Go
Day 12 - Go
Day 13 - Go
Day 14 - Go
Day 15 - Go
Day 16 - Go
Day 17 - Go
Day 18 - Go
Day 19 - Go
Day 20 - Go
Day 21 - Go
Day 22 - Go
Day 23 - Go
Day 24 - Go
Day 25 - Go
- Day 1 - EASY
- Arithmetic (Addition)
- Cycles (Looping and Iteration)
- Sets
- Day 2 - EASY
- Mapping counts / grouping
- String manipulation
- Day 3 - EASY
- String parsing
- Two dimensional arrays
- Day 4 - INTERMEDIATE
- String parsing
- Sorting/ordering
- Finding max value
- Day 5 - INTERMEDIATE
- Stacks or recursion
- Character/byte comparison
- Finding min value
- Day 6 - INTERMEDIATE
- String parsing
- Two dimensional arrays
- Manhattan Distance / Coordinate distance
- Minimum bounding box
- Day 7 - INTERMEDIATE
- String parsing
- DAGs (Directed Acyclic Graph)
- Topological sorting
- Day 8 - INTERMEDIATE
- String parsing
- Recursion
- Trees
- Day 9 - INTERMEDIATE
- Linked Lists
- Finding max value
- Day 10 - INTERMEDIATE
- String parsing
- Minimum bounding box
- Coordinate distance
- Graphics
- Day 11 - INTERMEDIATE
- Two-dimensional arrays
- Arithmetic
- Rounding
- Summed-Area table
- Day 12 - HARD
- String parsing
- Linked Lists
- State machines
- Pattern recognition
- Conway's Game of Life
- Day 13 - INTERMEDIATE
- String parsing
- Sorting
- Two-dimensional arrays
- Switch statements
- Day 14 - INTERMEDIATE
- Arithmetics
- Loops
- Day 15 - EXPERT
- Patience
- True grit
- Attention to detail
- Debugging skillz
- String parsing
- Switch statements
- Path-finding
- Breadth-First Search
- Dijkstra's Algorithm
- Two-dimensional arrays
- Game state
- Day 16 - INTERMEDIATE
- String parsing
- Function types
- Process of elimination
- Assembly concepts
- Day 17 - HARD
- String parsing
- 2 dimensional arrays
- Stacks
- Minimum bounding box
- Day 18 - INTERMEDIATE
- Conway's Game of Life
- Pattern recognition
- 2 dimensional arrays
- Day 19 - EXPERT
- String parsing
- Assembly
- Reverse-engineering
- Day 20 - INTERMEDIATE (Incorrect problem description, can be EXPERT level if you actually follow the instructions)
- String parsing
- Stacks
- Path-finding (Breadth-first search)
- Graph diameter (Floyd–Warshall Algorithm)
- Day 21 - EXPERT
- Assembly
- Reverse-engineering
- Pattern recognition
- Day 22 - HARD
- 2 dimensional arrays
- 3 dimensional arrays
- Arithmetic
- Path-finding
- Dijkstra's Algorithm
- A*
- Day 23 - EXPERT
- Visualizing 3-dimensional space
- Manhattan distance
- Finding max value
- Space partitioning (NOTE: there are multiple ways to solve this problem, but I believe this is by far the best way. I used octrees - partitioned space into 8 parts)
- Day 24 - HARD
- String parsing
- Game state
- Debugging (you are bound to mess up here, follow the rules!)
- Day 25 - INTERMEDIATE
- Manhattan distance
- 4-dimensional space
- Union-Find algorithm