Yay, 50 stars. My first year trying my hand at AOC. 23 successes, and 2 times I relied on you guys to help me out. Thanks all, it was fun.
Any observations on doing this in Elixir vs. other languages? I noticed the most elegant solutions posted here were a tight sequence of transformers taking the input data through Lists, Maps, MapSets, recursive traversals or searches, and composing it all back to the required output. I know other languages have these parts, but often I found myself smiling in satisfaction at the solutions you all posted.
I did this in F# and if I had to do it in Elixir, it would have been almost identical in code, with some strong typing and point free pipes.
This is the first year where I have done more solution in a non-Elixir programming language and loved it. I will actually write a post about my experiences.
Wooooooo, bittersweet that there is no part 2 but really happy to have finished
After all the challenges involving bit operations, I realised the keys and locks can be encoded as a single integer and a bitwise AND will check if there are any overlaps.