adventofcode 2025-12-04

I like your hashmap approach. Probably faster than iterating the sequences over and over again. That thought came to mind only after having completed part 1, so I just stuck with what I had.

https://github.com/samcf/advent-of-code/blob/main/2025-04-printing-department.clj I used a set of indices into the flattened grid which contained paper rolls, then looped over a set of indices to check next (possibly to remove) and a set of indices which still remained... about 80ms for everything (babashka)

Having helper functions really speeds up that kind of things. Never have to think about the details of grids anymore. Full context : https://github.com/Maravedis/advent_code/blob/master/src/advent_of_code/2025/04.clj

I used iterate to capture each frame for visualization https://github.com/tschady/advent-of-code/blob/main/src/aoc/2025/d04.clj

1
❤️ 1

Again in ‘Away from Preferred Editor ClojureScript Playground’: https://jurjanpaul.github.io/ape-cljs-playground/?code=KGRlZiBpbnB1dAogIDs7IHRvIGJlIHJlcGxhY2VkIHdpdGggcmVhbCBpbnB1dAogICIuLkBALkBAQEAuCkBAQC5ALkAuQEAKQEBAQEAuQC5AQApALkBAQEAuLkAuCkBALkBAQEAuQEAKLkBAQEBAQEAuQAouQC5ALkAuQEBACkAuQEBALkBAQEAKLkBAQEBAQEBALgpALkAuQEBALkAuIikKCihkZWZuIHBhcnNlLWdyaWQKICBbaW5wdXRdCiAgKGludG8ge30KICAgICAgICAoY29tcAogICAgICAgICAobWFwLWluZGV4ZWQgdmVjdG9yKQogICAgICAgICAobWFwY2F0IChmbiBbW3kgbGluZV1dCiAgICAgICAgICAgICAgICAgICAobWFwLWluZGV4ZWQgKGZuIFt4IGNdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbW3ggeV0gY10pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZSkpKSkKICAgICAgICAoc3RyaW5nL3NwbGl0LWxpbmVzIGlucHV0KSkpCgooZGVmIGRpcmVjdGlvbnMKICAoZm9yIFtkeCBbLTEgMCAxXSAKICAgICAgICBkeSBbLTEgMCAxXQogICAgICAgIDp3aGVuIChub3Q9IDAgZHggZHkpXQogICAgW2R4IGR5XSkpCgooZGVmIGdyaWQgCiAgKHBhcnNlLWdyaWQgaW5wdXQpKQoKKGRlZm4gbmVpZ2hib3VycyBbW3ggeV1dCiAgKG1hcCAoZm4gW1tkeCBkeV1dCiAgICAgICAgIFsoKyB4IGR4KSAoKyB5IGR5KV0pCiAgICAgICBkaXJlY3Rpb25zKSkKCihkZWZuIGFkamFjZW50LXJvbGxzCiAgW2dyaWQgcF0KICAoZmlsdGVyICMoPSAiQCIgKGdyaWQgJSkpCiAgICAgICAgICAobmVpZ2hib3VycyBwKSkpCiAgCihkZWZuIGFjY2Vzc2libGUtcm9sbD8KICBbZ3JpZCBtYXgtYWRqYWNlbnQtcm9sbHMgW3AgY11dCiAgKGFuZCAoPSAiQCIgYykKICAgICAgICg8PSAoY291bnQgKGFkamFjZW50LXJvbGxzIGdyaWQgcCkpCiAgICAgICAgICAgbWF4LWFkamFjZW50LXJvbGxzKSkpCgooZGVmbiBwYXJ0MSBbXQogICgtPj4gZ3JpZAogICAgICAgKGZpbHRlciAocGFydGlhbCBhY2Nlc3NpYmxlLXJvbGw%2FIGdyaWQgMykpCiAgICAgICBjb3VudCkpCgoocHJpbnRsbiAicGFydDE6IiAocGFydDEpKQoKKGRlZm4gcmVtb3ZlLXJvbGxzCiAgW2dyaWQgY2FuZGlkYXRlc10KICAocmVkdWNlIChmbiBbZ3JpZCBbcCBfXV0KICAgICAgICAgICAgKGRpc3NvYyBncmlkIHApKQogICAgICAgICAgZ3JpZAogICAgICAgICAgY2FuZGlkYXRlcykpCgooZGVmbiBwYXJ0MiBbXQogIChsb29wIFtncmlkIGdyaWQKICAgICAgICAgdG90YWwgMF0KICAgIChsZXQgW2NhbmRpZGF0ZXMKICAgICAgICAgIChmaWx0ZXIgKHBhcnRpYWwgYWNjZXNzaWJsZS1yb2xsPyBncmlkIDMpCiAgICAgICAgICAgICAgICAgIGdyaWQpXQogICAgICAoaWYgKHNlcSBjYW5kaWRhdGVzKQogICAgICAgIChyZWN1ciAocmVtb3ZlLXJvbGxzIGdyaWQgY2FuZGlkYXRlcykKICAgICAgICAgICAgICAgKCsgdG90YWwgKGNvdW50IGNhbmRpZGF0ZXMpKSkKICAgICAgICB0b3RhbCkpKSkKCihwcmludGxuICJwYXJ0MjoiIChwYXJ0MikpCg%3D%3D&checksum=NjMwNTY4MzU4

I was planning to do some quil-animation for today's task, but in the end I didn't have enough time for that... 😢 Here's just a notebook with the solution: https://narimiran.github.io/aoc2025/src/day04/

https://github.com/rjray/advent-2025-clojure/blob/master/src/advent_of_code/day04.clj Probably not the fastest (and certainly not the shortest). But I do like being able to directly compare vector-of-vectors instances for equality.

warning bad code: I wrapped a grid with dots and just brute forced both parts

Made a graph of all neighboring rolls so I could directly follow the chain reaction of becoming removable. I think it's a lower time complexity than searching all the remaining rolls over and over?

This one was easy because you can easily represent the rolls as a set of [row col] tuples. Also, I printed out the rolls at the end of stage 2 to see if it was a hidden message or picture ... it wasn't. So far, just found one hidden message.

what was the hidden message? CLICK?

Catching up.. was very busy yesterday. I leaned on my grid helpers, part 2 is rather slow (several seconds) but good enough .. on to day 5 https://github.com/Ramblurr/advent-of-code/blob/main/src/aoc/2025/day04.clj

Finally had some time to the animation (done with Quil):

🤯 5

Nice!

🍻 1