Day 7: Bridge Repair

Megathread guidelines

  • Keep top level comments as only solutions, if you want to say something other than a solution put it in a new post. (replies to comments can be whatever)
  • You can send code in code blocks by using three backticks, the code, and then three backticks or use something such as https://topaz.github.io/paste/ if you prefer sending it through a URL

FAQ

You are viewing a single thread.
View all comments
7 points
*

Uiua

This turned out to be reasonably easy in Uiua, though this solution relies on macros which maybe slow it down.

(edit: removing one macro sped it up quite a bit)

(edit2: Letting Uiua build up an n-dimensional array turned out to be the solution, though sadly my mind only works in 3 dimensions. Now runs against the live data in around 0.3 seconds.)

Try it here

Data   ← ⊜(β–‘βŠœβ‹•βŠΈ(¬∈": "))βŠΈβ‰ @\n "190: 10 19\n3267: 81 40 27\n83: 17 5\n156: 15 6\n7290: 6 8 6 15\n161011: 16 10 13\n192: 17 8 14\n21037: 9 7 18 13\n292: 11 6 16 20"
Calib! ← β‰‘β—‡βŠ’β–½βŠΈβ‰‘β—‡(βˆˆβ™­/[^0]:Β°βŠ‚) # Calibration targets which can be constructed from their values.
&p/+Calib!βŠƒ(+|Γ—)Data
&p/+Calib!βŠƒ(+|Γ—|+×ⁿ:10+1βŒŠβ‚™β‚β‚€,)Data
permalink
report
reply
3 points

I feel like I need a Rosetta stone to read this code

permalink
report
parent
reply
1 point
2 points

thanks that indeed is a Rosetta stone

permalink
report
parent
reply
3 points

Thanks to your solution I learned more about how to use reduce :D

My solution did work for the example input but not for the actual one. When I went here and saw this tiny code block and you saying

This turned out to be reasonably easy

I was quite taken aback. And it’s so much better performance-wise too :D (well, until part 2 comes along in my case. Whatever this black magic is you used there is too high for my fried brain atm)

permalink
report
parent
reply
2 points

Haha, sorry about that, it does seem quite smug :-) I went into it expecting it to be a nightmare of boxes and dimensions, but finding it something I could deal with was a massive relief. Of course once I had a working solution I reversed it back into a multi-dimensional nightmare. That’s where the performance gains came from: about 10x speedup from letting Uiua build up as many dimensions as it needed before doing a final deshaping.

I enjoyed reading a different approach to this, and thanks for reminding me that β‹•$"__" exists, that’s a great idiom to have up your sleeve.

Let me know if there’s any bits of my solution that you’d like me to talk you through.

permalink
report
parent
reply
2 points

No worries, it does seem a lot less difficult in hindsight now, my mind just blanked at what I expected to be a lot more code :))

That performance improvement is amazing, I’ll definitely take a look at how that works in detail later. Just gotta recover from the mental stretch gymnastics trying to remember the state of the stack at different code positions

permalink
report
parent
reply

Advent Of Code

!advent_of_code@programming.dev

Create post

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.

AoC 2024

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

Rules/Guidelines

  • Follow the programming.dev instance rules
  • Keep all content related to advent of code in some way
  • If what youre posting relates to a day, put in brackets the year and then day number in front of the post title (e.g. [2024 Day 10])
  • When an event is running, keep solutions in the solution megathread to avoid the community getting spammed with posts

Relevant Communities

Relevant Links

Credits

Icon base by Lorc under CC BY 3.0 with modifications to add a gradient

console.log('Hello World')

Community stats

  • 479

    Monthly active users

  • 109

    Posts

  • 1.1K

    Comments