Sign in

Daria

@gereleth.bsky.social
48 followers 43 following 76 posts

Data scientist. I love coding and puzzles. Play my pipes game: hexapipes.vercel.app/play

PostsRepliesMedia
Daria @gereleth.bsky.social · 15/04/2026
The eggs go into productivity modules, always a need for those)). And I recycle them a lot for quality upgrades. There was also that one time when biters hatched on my space platform and destroyed it. Vacuum, zero g, they don't care 😂 Here's my star: factorio.com/galaxy/Iron%...
factorio.com
gereleth - Galaxy Of Fame | Factorio
110
Daria @gereleth.bsky.social · 15/04/2026
Congrats on finishing! I like your spidertron army =) How come you starved 216 captive biter spawners though, poor things 🥲
110
Daria @gereleth.bsky.social · 16/12/2025
This reddit meme sums it up perfectly. I'm glad I went "let me just count the hard cases" early enough 😁 www.reddit.com/r/adventofco...
4-panel evil plan meme
1. Identify regions definitely big enough or definitely too small
2. Write a complex fitting algorithm to handle the rest
3. There is no rest
4. There is no rest
010
Daria @gereleth.bsky.social · 13/12/2025
This was the fourth year I've completed and I'm really thankful to @was.tl for providing this entertaining challenge again and again =).
020
Daria @gereleth.bsky.social · 13/12/2025
The hardest task I think was day 9 with the rectangles. It was kinda like the "Garden Groups" of 2024 day 12 and I need to get better with these weird 2d tile shapes =). My solutions are here: github.com/gereleth/aoc... (and a few animations too)
130
Daria @gereleth.bsky.social · 13/12/2025
Timings of my #AdventOfCode 2025 solutions in #python. I used scipy for day 10 LP and some numpy for day 9. The rest are in plain python 3.13. The task I enjoyed the most was the graph of day 11 - hard at first and really nice when it clicked. The solution is so pretty =).
A bar chart showing solution times in seconds for the tasks of Advent of Code 2025. The longest time is 1 s for part 2 of day 9 (Movie Theater). Other times are below 0.4 s.
140
Daria @gereleth.bsky.social · 12/12/2025
I wrote a check like this: - either the area is so big that each present can have its own 3x3 room - or the area is so small that the presents won't fit even if packed with no gaps - or we need the packing algo to know for sure But that third branch never saw any traffic =)
010
Daria @gereleth.bsky.social · 12/12/2025
The examples are way harder than the actual input because dense packing is necessary there. But all the actual inputs have either very big or very small areas 😉
110
Daria @gereleth.bsky.social · 12/12/2025
It's a joke day 😆
110
Daria @gereleth.bsky.social · 12/12/2025
The calculation could stay generalizable without relying on a specific path by taking a sum of both paths: total = ( svr_to_fft * fft_to_dac * dac_to_out + svr_to_dac * dac_to_fft * fft_to_out ) Some term will zero out and that's ok).
030
Daria @gereleth.bsky.social · 11/12/2025
Oh, so that's how it explodes. Nice. The answer had so many digits 😄
110
Daria @gereleth.bsky.social · 10/12/2025
I saw a great speedup when I added tracking of already seen states. No use coming back to them again and again 😀. (the rest of my approach was pretty similar to yours)
210
Daria @gereleth.bsky.social · 08/12/2025
Full input looks like this by the end (and the counts do get astronomical)
040
Daria @gereleth.bsky.social · 08/12/2025
#AdventOfCode 2025 - Day 7 - Laboratories #py5 animation for part 2 - just adding up the counts while tachyon beams flow down-down-down
1100
Daria @gereleth.bsky.social · 08/12/2025
And here's the full input!
030
Daria @gereleth.bsky.social · 08/12/2025
#AdventOfCode 2025 - Day 8 - Playground Rendered with #py5 (first time I made something legible with the 3d renderer 😁)
180
Daria @gereleth.bsky.social · 23/07/2025
Wanted to read it but all I get is a NGINX 502 Error :/
000
Daria @gereleth.bsky.social · 18/06/2025
My pipes game just got two new grids =) I like the mix of hexagons, triangles and squares - hexapipes.vercel.app/rhombitrihex... And the triangular grid is just pure minimalism - three distinct tiles and that's it hexapipes.vercel.app/triangular/5
030
Daria @gereleth.bsky.social · 07/01/2025
Saint Petersburg at night as seen from an airplane window on my recent flight. Spectacular view.
020
Daria @gereleth.bsky.social · 26/12/2024
A playlist of all the animations I made for #AdventOfCode 2024: www.youtube.com/playlist?lis... Managed to do a total of 14 days with #py5. Curiously the number is exactly the same as in '23 when I used #pygame. Each video has a link to the animation source code if you wanna see the messy plumbing)
youtube.com
Advent of Code 2024 Visualisations - YouTube
Animations illustrating the solutions to Advent of Code problems of 2024.
0100
Daria @gereleth.bsky.social · 26/12/2024
Did you have prior experience with C++ before deciding to use it for the Advent? =)
110
Daria @gereleth.bsky.social · 26/12/2024
Why are some points going blue? Are those part 2 obstacle locations? The animation makes me think there is some trick to finding them that I'm not aware of)).
000
Daria @gereleth.bsky.social · 25/12/2024
One other thing I tried before was to represent a sequence of changes as a single large number (like 4 digits in base 19 because there are 19 possible changes in -9..9) Then the 5d array can be a 2d array, where the other dimension is 19**4. But timings were about the same as 5d approach.
020
Daria @gereleth.bsky.social · 25/12/2024
I just tried line profiling and indeed the last line with `sequences.clip().sum().max()` takes 50% of total part2 time. I tried putting the buyers dimension last - no change in performance. It's just a heavy operation however you slice it I think =).
120
Daria @gereleth.bsky.social · 25/12/2024
I was wrong here, numpy is also very good for day20 (Race Condition). If distances from starting point are a 2d numpy array then for every cheating offset you can get the gains for the whole grid at once. My solution time went from 1.7s to 100ms when I switched to this approach.
110
Daria @gereleth.bsky.social · 25/12/2024
I thought light grey was a background color, was pretty puzzled how the dark grey stuff could mean locks 😅. Almost asked you about that))
110
Daria @gereleth.bsky.social · 25/12/2024
Fast solutions aren't general, they use some properties of the input that aren't in the task description. I studied the input program's flow on paper to figure out a shortcut for part 2. A direct "black box" approach does take forever.
000
Daria @gereleth.bsky.social · 25/12/2024
I want to debug that circuit with real wires 😄
020
Daria @gereleth.bsky.social · 25/12/2024
Pretty proud of solution times this year - all days run in just ~2.5s. Day 20 Race Condition used to take almost 2s before I gave it some numpy love. #python solutions and animations code here: github.com/gereleth/aoc...
060
Daria @gereleth.bsky.social · 25/12/2024
All done with #AdventOfCode 2024. Fun ride as always! Most memorable days for me: - Day 14 (find the tree) - Day 21 (robots inception) - Day 24 (so that's how binary addition works!) #py5 was very nice for making animations and I learned to use a statemachine to manage vis data
1141
Daria @gereleth.bsky.social · 24/12/2024
Thanks, #AdventOfCode, now I know how to construct a binary addition apparatus from logic gates 🤯 I submitted a handcrafted part2 answer earlier but I've now written some code that finds the swaps. Who knows if it works on other inputs =) github.com/gereleth/aoc...
150
Daria @gereleth.bsky.social · 23/12/2024
They are clumped together rather nicely!
010
Daria @gereleth.bsky.social · 23/12/2024
Well to be honest this is the first time I've imported numpy in this year's advent :)
110
Daria @gereleth.bsky.social · 23/12/2024
I made a couple of manual adjustments to avoid white edges intersecting). And 0.5px stroke weight is great for hiding the outer hairyness. I couldn't untangle the crowded third layer, some connections through the center are unavoidable.
010
Daria @gereleth.bsky.social · 23/12/2024
I was randomly throwing networkx layouts at the problem, and spectral clustering split nodes into sort of growing layers: .. |\ .... |\\\\ ....... Where the max clique was the tight group on top. So I made these concentric circles going in bfs layers from max clique.
110
Daria @gereleth.bsky.social · 23/12/2024
I had a similar solution at first, only I had a dict with total sequence profits and a separate "seen" set that I reset between buyers. Ran in ~6s. Then I switched to a 5d numpy array for sequence results and worked on buyers in a vectorized way. Takes ~0.7s now. github.com/gereleth/aoc...
220
Daria @gereleth.bsky.social · 23/12/2024
Cutesy structure this graph has. Outer layers are still hairy, I haven't figured them out =). #AdventOfCode Day 23 LAN Party
170
Daria @gereleth.bsky.social · 22/12/2024
#AdventOfCode Day 20 - Race Condition Showing millions of cheats is tricky so this one turned out a little weird =). In part 2 it repaints the points by their total possible cheat gains. Pretty neat structure shows up. #py5 animation code: github.com/gereleth/aoc...
0172
Daria @gereleth.bsky.social · 21/12/2024
#AdventOfCode Day 21 - Keypad Conundrum The robots almost broke my brain this morning, this was super hard for some reason. But at least the solution works pretty much instantly. #python solution code: github.com/gereleth/aoc... #py5 animation code github.com/gereleth/aoc...
060
Daria @gereleth.bsky.social · 20/12/2024
Isn't Manhattan distance just abs(xa-xb) + abs(ya-yb)? Why walk the path at all to find it? Or maybe your data is stored differently, linked list style... I have points as tuples (y,x) so Md calculation is just arithmetic and so is the diamond loop.
020
Daria @gereleth.bsky.social · 20/12/2024
I'm talking about this difference: for every node in path after a: is it close enough? is the gain good? => median ~5000 iterations for various `a`s vs for every node within 20 manhattan of a: is it in the path? is the gain good? => ~400 iterations for every `a`
120
Daria @gereleth.bsky.social · 20/12/2024
This looks like it scans something like for a in path: for b in path[from a]: ... (probably?) Maybe scanning around `a` in a diamond-pattern would be faster with fewer checks. But this is my longest running task too so what do I know lol 😅
110
Daria @gereleth.bsky.social · 20/12/2024
I think this "search for other point in the path" is what takes long. `const index = pathStrings.indexOf(key)` It can be just a Map lookup of distance to finish.
110
Daria @gereleth.bsky.social · 20/12/2024
Hmm, I didn't realize the path from start to finish covered the whole maze! I did it this way - get distances start-to-point and point-to-end for every traversable point. Iterate in a diamond around each point and check if dstart[p1]+manhattan(p1,p2)+dfinish(p2) is good enough. Runs in ~2s.
100
Daria @gereleth.bsky.social · 20/12/2024
Cool stiched together look! But I struggle to understand what color means here. What's your approach to part 2?
100
Daria @gereleth.bsky.social · 19/12/2024
#AdventOfCode Day 19 - Linen Layout Some dynamic programming if not dynamic visuals. No idea how to show full input, there's 400 sequences there =).
171
Daria @gereleth.bsky.social · 19/12/2024
But then I thought - why stop at just one letter, why not do all of them. And I made a tree structure for towels to get rid of all useless iterations over potential starts. It felt incredibly nice to figure out and implement this `PentacolorTree` index 😁 Solution code: github.com/gereleth/aoc...
010
Daria @gereleth.bsky.social · 19/12/2024
Key insight was speeding up the loops like this: for towel in towels: if design.startswith(towel)... We don't need to look at all towels every time because a lot of them aren't gonna pass that check. First I put towels into a dict like {first_letter: list of towels} That already gave a 5x speedup.
110
Daria @gereleth.bsky.social · 19/12/2024
I've completed "Linen Layout" - Day 19 - Advent of Code 2024 adventofcode.com/2024/day/19 First I threw together some memoized recursion - worked fine but took 1.7s to complete both parts. That was kinda slow so I looked for ways to speed things up and managed to make it 20x faster!
120
Daria @gereleth.bsky.social · 19/12/2024
Curious how the timings work out. My part 1 runs in 22 ms but part 2 only takes 55 ms. I use binary search to find the blocking obstacle by running `part1` at different numbers of fallen bytes. It takes 12 iterations on my input.
110