Skip to content

Solving http://adventofcode.com/, 2015: one programming language per puzzle, 2018: Scala, 2019: Typescript, 202{0,1,2}: Kotlin; 2023: C#; every year one completely unnecessary fold at a time

Notifications You must be signed in to change notification settings

vvondra/advent-of-code

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

advent-of-code

2023

De-rusting my C#, an obvious choice given I joined Microsoft earlier this year

2021-2022

Same as last year, going for Kotlin

2020

productboard is heavily investing into Kotlin, so that made this year's choice quite easy!

  1. Report Repair, find combinations in a cartesian product summing to 2020
  2. Password Philosophy, validate strings by some criteria
  3. Toboggan Trajectory, explore number of collisions on a straight paths on a 2D plane
  4. Passport Processing, validate strings by some criteria, a bit more parsing then #2
  5. Binary Boarding, following a binary search, finding a gap in a sequence
  6. Custom Customs, union and intersection of elements in a set
  7. Handy Haversacks, counting how many trees contain an element, count number of weighed elements in a tree
  8. Handheld Halting, simulating a VM
  9. Encoding Error, finding a contiguous sequence summing up to a number
  10. Adapter Array, counting number of possible paths through a graph with memoization
  11. Seating Systems, 2D celullar automaton
  12. Rain Risk, simulation of moving object on a 2D grid
  13. Shuttle Search, finding an number satysfing a set of linear equations with Modulo

2019

productboard is a big fan of Typescript, so that made this year's choice quite easy!

2018

This time all in Scala.

  1. Chronal Calibration, summing ints and finding first duplicate value on a random walk
  2. Inventory Management System, filtering strings by some criteria
  3. No Matter How You Slice It, counting interesting rectangles on a plane
  4. Repose Record, event simulation with some over-midnight tricky handling
  5. Alchemical Reduction, removing pairs of consecutive lower/upper case chars in a string
  6. Chronal Coordinates, a square grid version of Voronoi diagrams based on Manhattan distance
  7. The Sum of Its Parts, topological sort of tasks, part two with a spin where workers work in parallel
  8. Memory Maneuver, recursive parser building a tree, then some easy traversal
  9. Marble Mania, a simple game on a circular buffer
  10. The Stars Align, a simulation where points at an unknown time align to produce a message, no OCR implemented, just analytically determine the meeting point and wait
  11. Chronal Charge, finding the square sub-matrix of any size with largest sum of values
  12. Subterranean Sustainability, a 1D cellular automaton, part two requires finding a repeating pattern
  13. Mine Cart Madness, discrete simulation of mine carts on tracks
  14. Chocolate Charts, finding a subsequence on a generated stream
  15. Beverage Bandits, dungeon style simulation, tedious to implement all tie-breakers
  16. Chronal Classification, implementing a simple instruction set on 4 registers, deducing the instructions based on samples
  17. Reservoir Research, a simulation of water spreading between barriers, recursive solution
  18. Settlers of The North Pole, 2D cellular automaton
  19. Go With The Flow, implementing jumps in #16, part two requires understanding the assembly code and inlining an inefficient loop
  20. A Regular Map, a regular expression defining a maze which needs to be explored, keeping branching on a stack
  21. Chronal Conversion, building on #16 and #19, requires understanding the assembly code and finding a way to make it exit early by controlling a register
  22. Mode Maze, implementing shortest path (Dijkstra) on a graph representing cave exploration
  23. Experimental Emergency Teleportation, finding a point which most subsets contain, implemented using a SAT-solver, Z3
  24. Immune System Simulator 20XX, turn-based simulation similar to #15 with another set of tie-breakers
  25. Four-Dimensional Adventure, finding the number of components in a graph

2015

Solving http://adventofcode.com/, one programming language per puzzle

  1. Ruby, to get started
  2. C, pulling out the old scanf loop
  3. Java, because it got has sets
  4. Python, which I should have probably left for something harder
  5. Go, still figuring out if I like the language or not
  6. Haskell, probably horribly inefficient, but very fun figuring out the right structure
  7. Rust, scarred for life by trying to borrow a mutable reference
  8. PHP, back to the roots
  9. Prolog, sweet and short for backtracking the Traveling Santa
  10. Clojure, failing to understanding the meaning of juxtaposition but still using it
  11. C#, is it IEnumerable or IEnumerator?
  12. Node.js, best fit to parse JSON soup
  13. R, to generate all the permutations
  14. awk
  15. Scala, combinations are conveniently in standard library
  16. Julia, new kid on the block

About

Solving http://adventofcode.com/, 2015: one programming language per puzzle, 2018: Scala, 2019: Typescript, 202{0,1,2}: Kotlin; 2023: C#; every year one completely unnecessary fold at a time

Topics

Resources

Stars

Watchers

Forks