Thanks Homer.
I thought Alexandria Ocasio Cortez had done something scandalous at first reading
2D grids and parsing data from them in all manner of interesting ways is a real AoC staple.
I’m still hoping to be met with a problem at some point which can be solved by handling it as a type of funge program.
Oh indeed, but it’s normally quite straightforward in the first few days. Certainly my terrible solution today is longer than any in the first maybe 10 days of last year.
What’s a “funge program”? [edit, oh befunge-like I guess]
Yep, funge has been used to describe any kind of multi-dimensional programming language - often with self-modifying code, I’ve personally found both 3D and 4D funge languages.
There’s just something with the whole concept that amuses me, I’ve been trying to build some kind of funge-style programming puzzle game for a while now, but haven’t figured out a good hook to take it past being just a PoC yet.
I’m not sure whether to be intrigued or horrified at the idea of an AoC type challenge where we slowly build up a 4D “FungeCode” interpreter like 2019’s IntCode series (which I notice I still haven’t completed!)
I think the best description I saw was “Advent of Parsing”
So far I’ve usually had success with just going for regex, but the second challenge today bacfired quite spectacullary. I’m still postponing having to rewrite my solution, because unfortunately it’s not really possible to have 2D regex (as far as I know, would be awesome).
I guess just going with some kind of flood algorithm will be the way to go, but that’s effort
Day one really got me with those pesky overlapping words like eightwo
or twone
.
Today was actually really easy the way I did it.
I searched through all the characters of the lines and when I got one that wasn’t a number or a period, I looked at all the 8 places around to find the numbers. The numbers I completed by looking in both directions until I got a non-number.
Then I put all numbers and their starting positions in an array, deleted the duplicates and summed them.
By doing this, question 2 only took me 4 minutes.
Yeah it looks like the better solutions generally took that route. I convinced myself that the symbols were going to all have different rules in part 2, so ended up thinking about it way too hard for day 3 😀
Hmm, I did it the opposite. Found every number and passed a list of every adjacent position of the number to check for non-digit/dot/non-whitespace.
Took a bit longer to solve part 2 due to that approach though.