AoC 2024: Day 23

Main thread for Day 23 of the 2024 advent of code. Feel free to discuss the challenge and ask questions. If particular discussions become large, we can break them off into new threads.

Some Rules:

  1. Please try to keep spoilers within spoiler tags. This is done by typing [spoiler]text to be blurred[\spoiler]. If you have longer sections you can also use the [details=“Title”] tags.
  2. Have Fun

Day 23 Challenge

Templates:

Resources:

Previous days discussions

Day 1: AoC 2024: Day 1
Day 2: AoC 2024: Day 2
Day 3: AoC 2024: Day 3
Day 4: AoC 2024: Day 4
Day 5: AoC 2024: Day 5
Day 6: AoC 2024: Day 6
Day 7: AoC 2024: Day 7
Day 8: AoC 2024: Day 8
Day 9: AoC 2024: Day 9
Day 10: AoC 2024: Day 10
Day 11: AoC 2024: Day 11
Day 12: AoC 2024: Day 12
Day 13: AoC 2024: Day 13
Day 14: AoC 2023: Day 14
Day 15: AoC 2024: Day 15
Day 16: AoC 2024: Day 16
Day 17: AoC 2024: Day 17
Day 18: AoC 2024: Day 18
Day 19: AoC 2024: Day 19
Day 20: AoC 2024: Day 20
Day 21: AoC 2024: Day 21
Day 22: AoC 2024: Day 22

Fun problem, a bit difficult to do due to all the Christmas preparations though. Tomorrow is going to be a real challenge :wink:
The specifics of the input allow a simple greedy solution; so that’s that.

Source: aoc2024/src/day23.zig at main · p88h/aoc2024 · GitHub
Video: https://youtu.be/sZnkyDk0990

Benchmark:

        parse   part1   part2   total
day 23: 33.1 µs 22.9 µs  5.9 µs 62.1 µs (+-1%) iter=29110 

Weird posting this after p88h and his insane perf. I got to 800us after way too much tinkering. My breakthrough was to look for computers with a low number of disconnected pairs of neighbors. I am tired.

The Zig Pastebin using this ArraySet (wrapper around
AutoArrayHashMapUnmanaged for void values, because I felt like it) The Zig Pastebin

1 Like