Commit Graph

25 Commits

Author SHA1 Message Date
9e7942a35e Enable running all days at once
I'm kinda bored and wanted to.
2021-12-12 15:28:41 -06:00
5c37fc4129 More day 12 optimizations
Down to  ~98ms from the original ~940ms. That's a very respectable gain, but I am still not quite happy with the runtime. At this point, though, I think I will need to re-think my approach rather than making small tweaks.
2021-12-12 11:25:58 -06:00
c292bd45c6 3.4x speedup on Day 12
First round of the lowest of low-hanging fruits to get day 12 runtime from ~1s to ~280ms on my machine in Release. Still not happy with 280ms, so I will probably keep digging.
2021-12-12 10:57:29 -06:00
0dc2abeca9 Day 12 solution
This was my initial solution I used to submit the puzzle answer. Runtime for part 2 on my input set was around a second, so now I'm going to find optimization targets. I'm sure there's a lot I could be doing much better.
2021-12-12 10:08:46 -06:00
03c6ab60ef Update template
I found out that C# 10 added file-scoped namespaces that don't need the whole thing to be wrapped in braces, so that's neat.
2021-12-10 23:51:57 -06:00
a522b93f9b Day 11 solution
Pretty happy with this one overall. I tripped myself up on part 2 and caused a huge headache by not realizing that I was passing the already-modified array from part 1 into part 2. I left some code to copy the 2d array because that was my original solution (and it's not straightforward to copy jagged arrays), but then realized that the synchronized flash doesn't happen until after step 100 (at least for my input and the demo input) so we can just account for that in part 2 and pick up where part 1 left off.
2021-12-10 23:49:32 -06:00
e61f2bd255 Enable specifying which day to run
I like this tradeoff of running a single day in isolation so the output isn't muddied by other days but also being able to go back and run previous days' solutions (for comparison with friends also participating in advent). The only thing I wish I could do here is run "all" to fire them back to back, but this particular implementation doesn't allow that easily. Maybe later...
2021-12-10 13:54:18 -06:00
0cda2f9406 Equivalent day 1 in C#
Again, purely for curiosity/performance comparison reasons
2021-12-10 13:51:44 -06:00
db06f5b5c6 Day 1 in Go
Purely for curiosity/benchmarking-against-identical-Rust-version reasons

Spoilers: Rust is somewhat faster than Go and very much faster than .net
...though presumably .net's problem is purely startup time
2021-12-10 13:46:41 -06:00
21b9ccbfee Fix to run on Windows
I forgot about line ending differences.
2021-12-10 13:22:33 -06:00
f4a43710b8 Minor day 10 updates
I feel like this solution is a little cleaner/clearer. Same concept, just cleaned up the code a little more to my usual style. Some parts are a little bit slower, but I don't mind too much for this purpose.
2021-12-10 10:49:00 -06:00
55b385f779 Day 10 solution
I actually feel pretty good about this one.
2021-12-09 23:23:49 -06:00
2c224483b4 Day 9 solution
As always, plenty of room for improvement, but I'm reasonably satisfied with the core implementation. I'm honestly not sure why the Distinct is needed in the GetBasinSize() result as it's supposed to not even add the point if the point is already in there, but it's late so I'll check that out later.
2021-12-09 00:40:02 -06:00
0dd261b964 Enable nullability
I thought this was the old way. Apparently it's the new way.
2021-12-08 11:55:19 -06:00
1330d1eb66 Day 8
I hate almost everything about this solution. It's all awful and a product of constantly adjusting how I was solving the problem to try and get the correct answer, so there are vestigial pieces of each road I headed down. Then I ended up using some combination of all of those pieces to get the actual answer, and...well it just needs to be overhauled dramatically. But it works, so I guess mission accomplished.
2021-12-08 10:57:36 -06:00
cfb3c668c7 Day 7 solution
I'm reasonably happy with this one. I'm sure there's an easier way to determine the smallest distance, at least for part 1, but this works fast enough for me.
2021-12-07 07:56:11 -06:00
2cc95c6e8e Day 6 solution
Took me a while to come to the fast solution, but I got there.
2021-12-05 23:55:15 -06:00
b8848ab334 C# day template 2021-12-05 11:19:13 -06:00
7d93691276 Day 5 solution
There is a lot to be disliked here, starting with the Line Length calculation, which I'm sure I'm just totally overthinking or otherwise being dumb about, to the way I'm picking the next point while moving along the line.

Also, TIL how much of a difference a good GetHashCode() override can make when comparing/equating custom struct instances. Not implementing GetHashCode() on this solution resulted in ~250ms runtime on my PC. Implementing a "bad" GetHashCode() (which was `return x.GetHashCode() | y.GetHashCode();` which seemed fine to me ¯\_(ツ)_/¯) resulted in >1s runtime on my PC. Using this implementation (HashCode.Combine()) results in ~25ms runtime on my PC. Those numbers are with nothing changing other than the implementation of GetHashCode() on struct Point.

I also disabled nullability in my quest to improve performance here. The compiler was complaining that my Equals() override wasn't equivalent because of nullability, so it had to be `object? obj` which I didn't care for since this was a value type and not a reference type.
2021-12-05 11:19:13 -06:00
3dc7e1ccde Day 04 in javascript
This is a lot of copy/paste, but I am on a time crunch this morning so I'll clean it up later!
2021-12-05 11:19:10 -06:00
a0e5125a23 Tweak output formatting 2021-12-03 10:09:11 -06:00
12b004c724 Day 3 solution. Not clean, but oh well. 2021-12-03 10:00:48 -06:00
83e16885c7 Day 2 solution in C# 2021-12-02 10:03:00 -06:00
206b105e39 Add readme 2021-12-01 08:03:21 -06:00
1da6d83760 Day 1 solution in Rust
I have no idea what I'm doing in Rust, and I definitely don't understand
borrowing yet, so this is a hideous solution on multiple fronts. I'm not
sure that I'll be sticking with Rust as AoC doesn't feel like a
conducive environment to learn it in.
2021-12-01 08:00:40 -06:00