Advent of Code 2024 - Day 17

Greetings, fellow Erlang developers! :star2:

Ukrainian Erlanger is here! :metal: Today’s challenge, Day 17, puts us in front of a 3-bit computer with registers and opcodes - sounds like a perfect fit for Erlang’s strengths! :desktop_computer:

We need to implement an interpreter to run a program described by a sequence of opcodes and operands, simulating the behavior of registers A, B, and C. The result? A sequence of outputs that we’ll join into a single string. :rocket:

Some tips for tackling Day 17:

  • Opcode execution: Implement the instructions as Erlang functions. Using pattern matching will make handling each opcode clean and elegant.
  • State management: Track the registers (A, B, C) and the instruction pointer as part of the program’s state.
  • Combo operands: Carefully determine whether the operand is literal or combo and process accordingly. Remember the special register mappings!
  • Output collection: Gather all results of the out opcode into a list, then join them into the final output string.

:sparkles: Motivation for today:
When you debug a strange device, write clean code that survives the test of time and bit shifts.

Share your solutions, challenges, and any quirks you encountered while implementing the computer! Whether your interpreter runs smoothly or hits an infinite loop, let’s collaborate to get those outputs.

Happy coding and happy debugging! :christmas_tree::computer: :mechanical_arm: