Just wrote a fun little algorithm for iterating through all grid positions within X euclidean distance from a center, roughly in order of distance but also mostly ensuring each position yielded is at least diagonally adjacent to the previous. It's a fun problem to think about with lots of design tradeoffs and many valid solutions.
My solution requires that the origin be on the grid (I think?) and uses a bunch of caching instead of a bajillion distance checks, although I don't actually know what the memory/speed tradeoff is like or whether there are any gains at all (could be net losses, which I'm starting to wonder about more as I write this post). Thankfully I don't expect performance to be very critical here anyways, and doing the caching actually helped separate some logic in a useful way.
A fun little diversion from bigger stuff in the project and a reminder of some of the joys of programming design at a small scope. Feels kinda like mastering the local town's minigame while you're stuck on the main quest in an RPG.
#programming