adventofcode 2021-12-11

I'm skipping today's one, I think. Another grid puzzle ;)

👍 1
😲 1

Some devs suggested Fennel, which is Lua based, for some AOC challenges

how come? how does Fennel help?

I was just trying it out, it doesn't really help

Day 11 animation, it's flashing (epilepsy warning) so I hid it in a thread. Cubic interpolation is used to generate bigger image.

✨ 3
🤩 1

I feel like I would be able to navigate even when the octopi aren't all synced up :p

advent-of-animations, I’m inspired.

thanks for the threaded animation! looks very cool but nice to not have flashing by default

Yeah, I know it may be problematic for some people.

what's the plural of octopus? octopi?

Can someone confirm something about Day 11 for me. Question in thread

For the small example input

1	1	1	1	1
1	9	9	9	1
1	9	1	9	1
1	9	9	9	1
1	1	1	1	1
Does this eventually end up as
1	1	1	1	1
1	1	1	1	1
1	1	1	1	1
1	1	1	1	1
1	1	1	1	1
?

yes, octopuses eventually syncronize, all the values in the grid became the same

👍 1

I needed Day 10. I still haven't been able to solve part 2 of Day 9 (I'm going to punt for now) even though I know how to solve it. I just can't seem to write an implementation that doesn't either short-cut in a way that breaks or blows out my stack in skipping shortcuts. But Day 10? That was built for Lispers.

agreed. day 10 was a joy

🧵Day 11 answers thread: post your answers here

I couldn't get to this yesterday. I expected second half to be harder; I was glad I had built step 1 on top of iterate so I could just reuse it for step 2. I guess I could clean it up but I have to do day 12 first: https://github.com/euccastro/advent-of-code-2021/blob/main/day11.clj

not my most concise solution… avoids scanning the whole map any more than once per step by checking if an octopus is ready to flash at increment time and pushing it on a stack. lots of passing state around to make that work though. I was expecting part 2 to be “simulate for a really long time” 🤷 (I also didn’t look at the input and see that it was tiny facepalm) 13ms/42ms https://github.com/callum-oakley/advent-of-code/blob/main/src/aoc/2021/11.clj

Day 11 https://github.com/RedPenguin101/aoc2021/blob/main/day11.md and https://github.com/RedPenguin101/aoc2021/blob/main/clojure/src/aoc2021/day11.clj One of those things where the code started out pretty messy, but I got into a 'virtuous spiral' of refactoring, ending up with a quite readable (I think) solution. Definitely not fast! But sub-second, which is good enough I think.

https://github.com/kfirmanty/advent-of-code-2021/blob/main/src/day11.clj - my first pass at solution - nothing fancy on my side, just plain loop through the board but seems to do the trick and executes part-2 in 163ms on my machine

Wrote mine last night, and then rewrote it this morning. I used a recursive cascade-flashes function instead of keeping track of which points I had already flashed; it was a little less efficient than my original loop-recur, but I think it looks cleaner. • https://github.com/abyala/advent-2021-clojure/blob/main/docs/day11.md • https://github.com/abyala/advent-2021-clojure/blob/main/src/advent_2021_clojure/day11.clj

My solution for today

I was really bummed that update-in throws when given an invalid array position like [-1 0]

and at some point i learned that get-in returns the whole coll if the key is nil

💡 1

Horrible solution by me today. For whatever reason I couldn't get my head around grids, so I represented it as a flat vector. I also think I compensated for my brain not working by building it into a way too complicated data structure. Each cell looked like this

{:n 0 :flashed false :flashes 0 :xy [0 0] :i 0}
I know, dumb. BUt at least it's done, and it runs instantly. https://gist.github.com/stuartstein777/65179a928273e201af0b256a7b024487#file-2021-day-11-clj-L7 Definitely one I need to rethink when my brain is working better and re-work

fastest time from part 1 to part 2 yet - it's always nice when that happens

👏 3

Need to think if I can apply frequencies here 😆

😂 4

Very cool, @zelark! What did you use for visualization?