Day 3: Lobby
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
- What is this?: Here is a post with a large amount of details: https://programming.dev/post/6637268
- Where do I participate?: https://adventofcode.com/
- Is there a leaderboard for the community?: We have a programming.dev leaderboard with the info on how to join in this post: https://programming.dev/post/6631465


Uiua
You can run this in Uiua Pad
"987654321111111\n811111111111119\n234234234234278\n818181911112111" ⊜∘⊸≠@\n Jolt ← ⍥(⊙⊃⋅∘∘+1⟜(⊃(˜⊡|˜↘⊙+₁)⍜↘⟜(˜⨂⊸/↥)))⟜(+1¯) ∩/+⊃≡(⋕Jolt2)≡(⋕Jolt12)Explanation
You’re always looking for the highest digit far enough from the end of the string that there’s space to pick the remaining number of digits. So the algorithm is very straightforward: just temporarily exclude the last n-1 characters off the end of the string and look for the first instance of the largest digit in that substring, store that char and behead the string at that point. Repeat n times.
I cant understand your code, but your description of your algorithm was very clear.
Thanks, although it only really became clear after I’d written it. I am thinking about doing a more detailed explainer post based on one day’s answer to help people get a feel for it.