De-rusting my C#, an obvious choice given I joined Microsoft earlier this year
Same as last year, going for Kotlin
productboard is heavily investing into Kotlin, so that made this year's choice quite easy!
- Report Repair, find combinations in a cartesian product summing to 2020
- Password Philosophy, validate strings by some criteria
- Toboggan Trajectory, explore number of collisions on a straight paths on a 2D plane
- Passport Processing, validate strings by some criteria, a bit more parsing then #2
- Binary Boarding, following a binary search, finding a gap in a sequence
- Custom Customs, union and intersection of elements in a set
- Handy Haversacks, counting how many trees contain an element, count number of weighed elements in a tree
- Handheld Halting, simulating a VM
- Encoding Error, finding a contiguous sequence summing up to a number
- Adapter Array, counting number of possible paths through a graph with memoization
- Seating Systems, 2D celullar automaton
- Rain Risk, simulation of moving object on a 2D grid
- Shuttle Search, finding an number satysfing a set of linear equations with Modulo
productboard is a big fan of Typescript, so that made this year's choice quite easy!
This time all in Scala.
- Chronal Calibration, summing ints and finding first duplicate value on a random walk
- Inventory Management System, filtering strings by some criteria
- No Matter How You Slice It, counting interesting rectangles on a plane
- Repose Record, event simulation with some over-midnight tricky handling
- Alchemical Reduction, removing pairs of consecutive lower/upper case chars in a string
- Chronal Coordinates, a square grid version of Voronoi diagrams based on Manhattan distance
- The Sum of Its Parts, topological sort of tasks, part two with a spin where workers work in parallel
- Memory Maneuver, recursive parser building a tree, then some easy traversal
- Marble Mania, a simple game on a circular buffer
- 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
- Chronal Charge, finding the square sub-matrix of any size with largest sum of values
- Subterranean Sustainability, a 1D cellular automaton, part two requires finding a repeating pattern
- Mine Cart Madness, discrete simulation of mine carts on tracks
- Chocolate Charts, finding a subsequence on a generated stream
- Beverage Bandits, dungeon style simulation, tedious to implement all tie-breakers
- Chronal Classification, implementing a simple instruction set on 4 registers, deducing the instructions based on samples
- Reservoir Research, a simulation of water spreading between barriers, recursive solution
- Settlers of The North Pole, 2D cellular automaton
- Go With The Flow, implementing jumps in #16, part two requires understanding the assembly code and inlining an inefficient loop
- A Regular Map, a regular expression defining a maze which needs to be explored, keeping branching on a stack
- 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
- Mode Maze, implementing shortest path (Dijkstra) on a graph representing cave exploration
- Experimental Emergency Teleportation, finding a point which most subsets contain, implemented using a SAT-solver, Z3
- Immune System Simulator 20XX, turn-based simulation similar to #15 with another set of tie-breakers
- Four-Dimensional Adventure, finding the number of components in a graph
Solving http://adventofcode.com/, one programming language per puzzle
- Ruby, to get started
- C, pulling out the old
scanf
loop - Java, because it got has sets
- Python, which I should have probably left for something harder
- Go, still figuring out if I like the language or not
- Haskell, probably horribly inefficient, but very fun figuring out the right structure
- Rust, scarred for life by trying to borrow a mutable reference
- PHP, back to the roots
- Prolog, sweet and short for backtracking the Traveling Santa
- Clojure, failing to understanding the meaning of juxtaposition but still using it
- C#, is it IEnumerable or IEnumerator?
- Node.js, best fit to parse JSON soup
- R, to generate all the permutations
- awk
- Scala, combinations are conveniently in standard library
- Julia, new kid on the block