Ask HN: Is it OK to look at AoC solutions?
I'm yet again attempting AoC. I've never completed one yet. Mostly I get too busy on the run up to Christmas but sometimes I just get stuck.
This brings me to my question. If you are stuck is it OK to just look at a solution?
For me, I got stuck on Day 1 Part 2. No amount of hints worked, so I just found a solution. I managed to get the code to produce the correct answer. I still don't understand why, I'm not good at maths. AI can't ELI5 either.
So is it good to see how others solved the problem? Or just remain stuck, and not understanding why?
Personally I feel better about knowing a solution to the problem even if I didn't solve it myself, mostly because not knowing is worse.
I usually give myself 30-60 mins to solve. If I can't do it by then I will look up solutions and -study- them (also break it piece by piece and see if I can generalize it for future problems). I would look at solutions even after solving it by myself.
I find that to be the best balance between challenge and learning something new. You will mentally burn yourself out if you keep bashing against the wall for hours or more, not quite a healthy thing to do :)
Meanwhile, people who actually try to compete on this stuff have already developed rich library of specialized algorithms to leap ahead of average programmer. Well, I guess nowadays a lot of it is LLM assisted too.
The more you struggle at something the more you will learn. That works up to the point where the struggle is beyond your capacity for struggle - then you just get stuck. So ideally (assuming you are doing this because you want to learn something) you want to reduce the amount of struggle to just below your capacity.
Just copying someone else's solution, or getting an LLM to fix it for you will be very low struggle, so you won't learn much.
To add some struggle, maybe look up a solution in a different language and translate to your language? You could choose a solution in a language similar to your language, so if you are solving in C, perhaps look up a C# solution or to make it harder look up a solution in a different paradigm. Find a Haskell solution or a Prolog one and see if that gives you enough hints.
It’s better to look at other solutions, analyze and understand them to learn something new rather than giving up and not learning something new