Let's see some cool properties of sets of numbers that may be useful to increase performance of your algorithms.
Let's see how the proper representation of problem matters for the Day 6 problem and discuss the `crossinline` modifier in Kotlin.
Revisit Kotlin delegated properties and ranges definitions when solving Day 5 puzzle.
Let's create some generic helper functions for dealing with data that will help us with this and probably future Advent Days 😎.
Abstracting the problems parts may become complicated when the problem needs understanding the whole its content before trying to implement some smaller parts. Let's see how we deal with it in Day 3 of Advent of Code.