summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2022-12-20Input for puzzle 20Adam Spragg
2022-12-20First attempt at puzzle 19 part 1 (buggy)Adam Spragg
It produces *a* result for each blueprint, but not the best result. I feel like that's a hard problem. The number of decisions about what to build when over 24 iterations explodes so much that you can't brute-force the optimal geode count. Either there's a way of pruning possibilities that I've not thought of, or there's a pretty good heuristic you can get from the blueprint about the proportions of how many of each type of material you want to be producing, that you can pick what to build and get a geode count that doesn't deviate from optimal in only 24 iterations. One other possibility is transforming this puzzle into a SAT format and letting a SAT solver attack it, with its ability to prune decision trees effectively. But I don't have any actual experience with those, and I'm not sure I have time to figure that out for AoC. https://en.wikipedia.org/wiki/SAT_solver
2022-12-20Input for puzzle 19Adam Spragg
2022-12-19Solve puzzle 18 part 2Adam Spragg
Wow, it's hard figuring out the interior of a space. Did it the brute force way, which worked OK because the total volume was small enough. After part 1, I was hoping to be able to catch up the day I'm behind. That's not happening today. We'll see how tomorrow's challenge goes.
2022-12-19Rename `struct face` to `struct point`Adam Spragg
2022-12-19Solve puzzle 18 part 1Adam Spragg
2022-12-19Input for puzzle 18Adam Spragg
2022-12-18Solve puzzle 17 part 2Adam Spragg
You probably want to pass `-c` to cheat, if you want the solution in less than a day!
2022-12-18Solve puzzle 17 part 1Adam Spragg
2022-12-18Input for puzzle 17Adam Spragg
I'm at least a day behind now, unsure where to start looking for issues with my code for day 13, and struggling to visualise how to guarantee an optimal solve for day 16 pt 2. Oh well
2022-12-17Free the valve input regex on exitAdam Spragg
2022-12-17Keep the start point separate from the permutable pathAdam Spragg
2022-12-17Allow debug mode to work with real data.Adam Spragg
Only tried it with test data before, where we don't need the permutation pruning system. If you enable it with live data, it prevents any permutations from being skipped, so it takes forever.
2022-12-17Allow variable time until eruptionAdam Spragg
2022-12-17Solve puzzle 16 part 1Adam Spragg
That was a tough one. Still takes 2.5s on my hardware. Should be able to multithread the permuation search at some point, if I want to.
2022-12-16Input for puzzle 16Adam Spragg
2022-12-15Solve puzzle 15 part 2Adam Spragg
2022-12-15Solve puzzle 15 part 1Adam Spragg
2022-12-15Input for puzzle 15Adam Spragg
2022-12-14Solve puzzle 14 part 2Adam Spragg
2022-12-14Solve puzzle 14 part 1Adam Spragg
2022-12-14Input for puzzle 14Adam Spragg
2022-12-14Compare the lists of each node, not each node.Adam Spragg
Because we're storing the input lists *as a list*, when we compare successive pairs of lists, we can't compare the list nodes themselves. Instead, we compare the lists they point to. Unfortunately, this doesn't change the answer we get. It does improve runtime though!
2022-12-13First attempt at puzzle 13 part 1 (buggy)Adam Spragg
Gets correct answer for test input, but wrong answer (5711) for main input. The problem is, I don't know where it's going wrong, and the inputs are complicated, so tracking down the source of the problem is going to be a major pain. Wish I hadn't put this off for most of the day, and had more time to look at it now.
2022-12-13Input for puzzle 13Adam Spragg
2022-12-12Solve puzzle 12 part 2Adam Spragg
2022-12-12Reverse direction of searchAdam Spragg
2022-12-12Don't infinite loop if we never reach the end pointAdam Spragg
2022-12-12Solve puzzle 12 part 1Adam Spragg
2022-12-12Input for puzzle 12Adam Spragg
2022-12-11Solve puzzle 11 part 2Adam Spragg
The trick is that we don't care about how much worry there is, we only care how much worry modulo the test divisor, to figure out which monkey gets the item next. Now, I know that addition is stable under modulo arithmetic, but I seem to remember that multiplication is stable under modulo arithmetic also? (I think public key cryptography relies on this?) So, by only keeping track of our worry, modulo the product of all the test divisors, everything should still work correctly? At least, that's what I tried, and it stopped all the overflow, and I seemed to get the right numbers according to the expected test results, and my final answer was also accepted. So I guess it does work correctly!
2022-12-11Count the number of inspections as a longAdam Spragg
2022-12-11First attempt at puzzle 11 part 2 (buggy)Adam Spragg
Turned item worry levels to unsigned long in an attempt to not overflow. Added checks for overflow, and they get hit - quickly - without the calming factor. Will need to think about this. (or try bignums)
2022-12-11Solve puzzle 11 part 1Adam Spragg
2022-12-11Input for puzzle 11Adam Spragg
2022-12-10Solve puzzle 10 part 2Adam Spragg
2022-12-10Solve puzzle 10 part 1Adam Spragg
2022-12-10Input for puzzle 10Adam Spragg
2022-12-09Solve puzzle 9 part 2Adam Spragg
Needed to switch to moving the head one step at a time and recalcating the rest of the rope on each iteration, or the numbers came out wrong.
2022-12-09Cleanup puzzle 9 part 1Adam Spragg
Now that we fixed the bug, get rid of debug output.
2022-12-09Solve puzzle 9 part 1Adam Spragg
I wasn't creating a new tail element after inserting the first tail, so when we revisited the origin the second time it didn't spot it as a dupe, giving an off-by-one error (The test input didn't have the tail pass the origin twice, so this wasn't an issue there)
2022-12-09First attempt at puzzle 9 part 1 (buggy)Adam Spragg
Apparently the answer it gets for the full input (5736) is wrong. The answer for the test input (13) is right though. Added a bunch of debugging logic, to try and see *where* it's going wrong, but I can't see it so far. This one is interesting.
2022-12-09Ignore .test filesAdam Spragg
Allows me to save the test input as a .test file without getting nagged by git.
2022-12-09Input for puzzle 9Adam Spragg
2022-12-08Solve puzzle 8 part 2Adam Spragg
2022-12-08Solve puzzle 8 part 1Adam Spragg
2022-12-08Input for puzzle 8Adam Spragg
2022-12-07Solve puzzle 7 part 2Adam Spragg
2022-12-07Solve puzzle 7 part 1Adam Spragg
2022-12-07Remove trailing empty lineAdam Spragg