Commit Graph

17 Commits

Author SHA1 Message Date
0b3cdc2331 Day 9 solution
This day showed me that when the input instruction was introduced and said "write addresses will never be in immediate mode", that didn't mean "so don't bother handling modes for input addresses", it meant "handle the mode, but assert if it's immediate mode". It was super helpful that this program contained a bootstrap sequence to validate each instruction.

Memory expansion came with a few caveats: obviously reads and writes needed to handle expanding the memory space, but a Reset also can no longer get away with simply copying the program into memory again because we need to ensure that any additional memory is cut off (or at least zeroed), so the quickest way to handle that in Go is to simply allocate a new buffer; I'd rather manipulate the existing buffer, but I'm having a hard time finding the best way to do that.

And finally, make sure you reset your relativeBase when resetting the program...that one was ugly to track down.
2022-06-10 10:37:38 -05:00
2d6150e318 Day 8 solution
I had fun with this one. I liked how straightforward it was, and it's always satisfying to see the code print a message visually when you're done.
2022-06-10 10:37:38 -05:00
1784ab77c8 Day 7 solution
I will probably end up regretting this since I assume the "wait to be given an input from some other process before continuing execution" paradigm is going to come up again, but this part 2 goroutine+channel solution felt good (taking advantage of Go features) and made me happy, so I rolled with it.
2022-06-10 10:37:38 -05:00
9a4fb7c734 Day 6 solution
I'm reasonably happy with this. I started with a bi-directional linked list, but realized that a flat list of all nodes came in handy for one use case while the linked list came in handy for another, so I settled on that.
2022-06-10 10:37:38 -05:00
52737dd7c3 Day 5 solution
This required an overhaul of the intcode machine to actually be its own type that could operate on its own memory and stuff. So I had to touch day 2 to make it adhere to the new API.

Feeling good about this foundation now. Until I get gobsmacked at some point later, which I expect to happen.
2022-06-10 10:37:32 -05:00
6d3627e93b Improve output formatting
Adds some whitespace, a divider, and indents each part's output a bit.
2022-06-10 10:34:44 -05:00
40d5eb59be Add flags to only run a specific part
Now we can specify to only run part1 or part2 of the given day(s). Just in case we need some super focused testing or debugging!
2022-06-10 09:56:37 -05:00
c9cfffcc1c Show timing information when running all days 2022-06-10 09:15:08 -05:00
28ea3ff6a1 Handle an empty argument
This makes it slightly easier to adjust VSCode's launch.json to hop around debugging different days. Not much, but a little. And every little bit helps!
2022-06-09 13:17:51 -05:00
bc8ebae440 Day 4 solution
Plenty of room for optimization here, but it's enough for my needs for now.
2022-06-09 08:23:34 -05:00
a53e3467fe Make the linter happy
I mean, it's right, but still...
2022-06-08 18:03:08 -05:00
8ec5aafcc2 Day 3 solution
This is horrendous and slow. But it works. I really don't like grid problems.
2022-06-08 08:23:07 -05:00
092fe15b07 Fix running "all" tests out of order sometimes
Maps are unordered, so this uses an array, which is simpler overall, really.
2022-06-07 22:54:11 -05:00
93c9bc7d6f Day 2 initial solution
There's room to optimize part 2, but I wanted to commit my original brute-force solution first.
2022-06-07 09:26:21 -05:00
d2fbe85a71 Set to automatically run the most recent day 2022-06-07 09:14:24 -05:00
85da090c2b Output tweaks, fix day numbering 2022-06-06 15:30:58 -05:00
662d76eb7c Bootstrap and day 1 solution 2022-06-06 15:14:31 -05:00