17
🌻 - 2024 DAY 12 SOLUTIONS -🌻
(programming.dev)
An unofficial home for the advent of code community on programming.dev!
Advent of Code is an annual Advent calendar of small programming puzzles for a variety of skill sets and skill levels that can be solved in any programming language you like.
Solution Threads
M | T | W | T | F | S | S |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 |
Icon base by Lorc under CC BY 3.0 with modifications to add a gradient
console.log('Hello World')
Uiua
~~Takes about 3 seconds to solve both parts for live data, caused primarily by my terrible fill function in
FieldCoords
which repeatedly refills and dedups already discovered cells. I promised myself when I wrote it that I would revisit it, but I really can't be bothered right now. Sorry Kai.~~LATE EDIT: Thanks to Quant for the inspiration to revisit this. With his code snippet and the realisation that I should normalise all fields to remove wasted space, runtime is now down to 55ms.
I found multidimensional markers for partition to work really well for finding the fields:
Areas ← ⊜□:⇡△.+1⍜♭⊛
It just groups the other array's contents according to adjacent markers, horizontally and vertically. Took me quite a bit to figure out what's actually happening in the example in the documentation ^^'Ooh, interesting, I'll have to give that a try. Thanks!
(edit) Wow, that replaced my three lines of overly complex code without a hitch.
classify
is an operator I never really got the point of before. Beautiful.Nice :D
How's the speed now?
1.8s now. 99% of that in
Sides
. I've just had an idea though... ~~maybe too late for today though!~~edit: prepending
≡⍚(-¤⊸/↧)
toFields
spared me from manipulating hundreds of irrelevant 0's, so time is very good now at 55ms.Damn that's a lot time saved. I love how unassuming the addition looks for how great an effect it has
It was a real D'oh! moment when I visualised the data I was generating and saw all the zeros stretching across the page.