Commit Graph
100 Commits
Author SHA1 Message Date
ktims 6efb9e0f83 day23: add pivot to bron-kerbosch, use more hashsets for speed
test / AoC 2024 (push) Failing after 4m2s
2024-12-23 02:07:49 -08:00
ktims 237ca36381 day23: clippies
test / AoC 2024 (push) Failing after 4m17s
2024-12-23 00:57:52 -08:00
ktims d3bade1bdd day23: part 2 - bron kerbosch solution 2024-12-23 00:54:23 -08:00
ktims 50a197856a day23: part 2 working (i think) but too slow 2024-12-23 00:23:36 -08:00
ktims d3ce12693b day23: part 1 solution
test / AoC 2024 (push) Failing after 3m48s
2024-12-22 21:48:59 -08:00
ktims d31f9725f5 day22: perf and clippies, down to < 1s
test / AoC 2024 (push) Failing after 4m2s
2024-12-22 02:21:24 -08:00
ktims c5857ed449 day22: improvements
test / AoC 2024 (push) Failing after 6m37s
2024-12-21 23:49:07 -08:00
ktims 40d5e820bc grid: additional impls of Coord2d 2024-12-21 23:49:06 -08:00
ktims 5d518248a8 day20: clippies and performance 2024-12-21 23:49:06 -08:00
ktims cebdbd1007 day20: part 2 solution (slow) 2024-12-21 23:49:05 -08:00
ktims 32937aaa0e day22: part 2 solution. 38s runtime but works. 2024-12-21 23:49:04 -08:00
ktims c681727fb3 day22: part 1 solution 2024-12-21 23:46:08 -08:00
ktims 02fc154547 grid: use coord2d more consistently 2024-12-21 21:01:16 -08:00
ktims 13f61e3a2b part2: works up to the 4th iteration, then returns too high values
test / AoC 2024 (push) Failing after 3m40s
I think the issue is not testing both possible paths for direction keypads, but doing this naively blows up the compute complexity (and I got the wrong answer)
2024-12-21 02:48:39 -08:00
ktims 8958ba9361 day21: part 1 solution
test / AoC 2024 (push) Failing after 3m35s
2024-12-20 23:20:21 -08:00
ktims e60f6effa3 day20: part 1 solution
test / AoC 2024 (push) Failing after 4m38s
2024-12-20 20:56:14 -08:00
ktims c2e3422544 day19: rayon - ez mode parallelization, speed * 6
test / AoC 2024 (push) Successful in 3m16s
2024-12-18 23:09:51 -08:00
ktims 6b6dededc2 day19: clippies
test / AoC 2024 (push) Successful in 3m25s
2024-12-18 22:45:10 -08:00
ktims 65d498f168 day19: complete solution
test / AoC 2024 (push) Failing after 3m46s
2024-12-18 22:39:32 -08:00
ktims cdb3a7261a day19: pre puzzle boilerplate 2024-12-18 20:56:36 -08:00
ktims dbee7d91b6 day18: clippies
test / AoC 2024 (push) Successful in 3m21s
2024-12-18 15:42:23 -08:00
ktims 0fee7c3594 ci: report errors correctly
test / AoC 2024 (push) Failing after 3m11s
2024-12-18 15:36:02 -08:00
ktims 824d111b18 ci: don't use '-D warnings' except for clippy run
test / AoC 2024 (push) Has been cancelled
2024-12-18 15:34:15 -08:00
ktims a1dceb6ff1 day18: perf: swap dijkstra for bfs for ~30% improvement
test / AoC 2024 (push) Successful in 1m41s
2024-12-18 15:31:12 -08:00
ktims 3712b32634 grid: row and column iterators 2024-12-18 15:31:07 -08:00
ktims 2a11e17d92 day18: improve brute for for binary search for big gainz
test / AoC 2024 (push) Successful in 1m48s
also avoid unnecessary path tracking work
2024-12-18 11:35:22 -08:00
ktims 1c254fff93 Revert "cargo: optimize harder"
test / AoC 2024 (push) Successful in 1m50s
This reverts commit 44108c4b35.
2024-12-18 00:53:51 -08:00
ktims 44108c4b35 cargo: optimize harder 2024-12-18 00:41:40 -08:00
ktims b588837624 day18: small optimization - avoid duplicates
not sure if the input contains dupes, but avoid doing a second path
search if the square already contains a byte, seems like a small
performance gain
2024-12-18 00:41:28 -08:00
ktims 9a6ca66059 grid: microoptimizations
test / AoC 2024 (push) Successful in 1m49s
2024-12-17 23:52:14 -08:00
ktims 2729799fa2 day18: optimize
* Implement generic path tracing, so part 1 doesn't store and return the full path,
  just the count.
* Improve part2 impl to only run path search if the block fell on our
  last path.
* Start part2 path search from the best path position immediately before
  the placed block.
2024-12-17 23:51:09 -08:00
ktims 8d2fbc0fcb repo: more aggressive optimization 2024-12-17 23:41:48 -08:00
ktims 4f48d839b2 day18: part 2 solution + some optimizations
test / AoC 2024 (push) Successful in 2m47s
2024-12-17 22:13:49 -08:00
ktims 414569537e day18: part 2 solution 2024-12-17 22:00:10 -08:00
ktims 5036866663 day18: part 1 solution 2024-12-17 21:52:41 -08:00
ktims 9be86e2cc2 day17: clippies
test / AoC 2024 (push) Successful in 2m38s
2024-12-17 01:03:06 -08:00
ktims 5bcead2691 day17: part 2 solution
test / AoC 2024 (push) Successful in 1m43s
2024-12-17 00:46:18 -08:00
ktims c99d8a400a day17: part 1 solution
test / AoC 2024 (push) Successful in 1m54s
2024-12-16 22:29:55 -08:00
ktims 5e8b974137 clippies!
test / AoC 2024 (push) Successful in 1m44s
2024-12-16 14:54:48 -08:00
ktims 28a88e1aa7 day14: replace RE parser with nom consuming parser
Almost 100x speedup on parsing phase avoiding RE compile, saves ~60ms
2024-12-16 14:47:48 -08:00
ktims 33615b015f cargo: update and add nom, misc 2024-12-16 14:44:30 -08:00
ktims b7a1f05b1e utils: add misc and implement CustomBounded 2024-12-16 14:41:32 -08:00
ktims de7ee8f0f6 day14: don't print robots map
test / AoC 2024 (push) Successful in 3m43s
2024-12-16 11:40:10 -08:00
ktims c31d653612 day16: minor performance and refactoring
test / AoC 2024 (push) Successful in 3m44s
2024-12-16 01:33:02 -08:00
ktims 20e6889572 day16: improve perf again by going to i16 positions
test / AoC 2024 (push) Successful in 5m29s
map dimensions fit in i16, so use those in data structures

make grid support generic position type as long as they implement to i64
2024-12-16 01:06:39 -08:00
ktims 755fbbc53d day16: refactor, optimize
split path recording and best cost functions for big gainz

use i32 instead of i64 positions to shrink data structures for some
gainz
2024-12-16 00:58:15 -08:00
ktims 4b85a90635 day16: part 2 solution
test / AoC 2024 (push) Successful in 3m7s
2024-12-15 23:22:14 -08:00
ktims 2cf8527c4f grid: add add_mut() 2024-12-15 23:21:59 -08:00
ktims 6283ff37f9 day16: part 1 solution
test / AoC 2024 (push) Successful in 2m56s
2024-12-15 22:06:21 -08:00
ktims f2186d18d3 ci: allow test failures, fix input getting script mistake
test / AoC 2024 (push) Successful in 4m16s
2024-12-15 01:06:09 -08:00
ktims c261ee56fe day15: cleanup, clippies
test / AoC 2024 (push) Has been cancelled
2024-12-15 01:03:08 -08:00
ktims 411d6aa26d day15: cleanup & use the same implementation for both parts
test / AoC 2024 (push) Failing after 2m17s
2024-12-15 00:56:07 -08:00
ktims c2c0145219 day15: part 2 submitted solution
test / AoC 2024 (push) Failing after 2m27s
2024-12-15 00:50:19 -08:00
ktims 4dfdaca58c day15: part 1 solution + beginning of part 2
test / AoC 2024 (push) Has been cancelled
2024-12-15 00:49:44 -08:00
ktims 003bc3212d pre-commit: check clippies and format in pre-commit to avoid CI fail
test / AoC 2024 (push) Successful in 2m55s
2024-12-13 23:51:50 -08:00
ktims b060de20c7 day11: clippies
test / AoC 2024 (push) Successful in 3m7s
2024-12-13 23:44:46 -08:00
ktims bc7ec50c94 CI: get real inputs, and do a full run 2024-12-13 23:44:29 -08:00
ktims 8ae2115b52 CI: create fake inputs so tests can run
test / AoC 2024 (push) Successful in 1m27s
2024-12-13 23:06:23 -08:00
ktims 74a6b16924 chore: rust fmt 2024-12-13 23:06:07 -08:00
ktims e8a38e7b24 day14: pretty print a tree 2024-12-13 23:05:58 -08:00
ktims c6153663b5 day14: complete solution
test / AoC 2024 (push) Failing after 58s
2024-12-13 22:53:07 -08:00
ktims 8b011941c4 CI: make a workspace
test / AoC 2024 (push) Failing after 1m7s
2024-12-13 18:09:22 -08:00
ktims d88f907c03 clippies
test / AoC 2024 (push) Failing after 1m14s
2024-12-13 17:55:28 -08:00
ktims d6d81a0c29 CI: run tests
test / AoC 2024 (push) Failing after 1m22s
2024-12-13 17:52:42 -08:00
ktims ed184fc92c day12/day13: codspeed compat (&str input) 2024-12-13 17:42:44 -08:00
ktims a1774d1f73 grid: impl FromStr for Grid<u8> 2024-12-13 17:28:45 -08:00
ktims 3bbf05b30c pre-commit 2024-12-13 02:24:18 -08:00
ktims 6a8a7a9ad1 pre-commit update 2024-12-13 02:22:55 -08:00
ktims 1a6d37f4f3 clippies 2024-12-13 02:17:57 -08:00
ktims 35637cece1 readme 2024-12-13 02:15:41 -08:00
ktims ebf5a0a489 day13: complete solution 2024-12-13 02:12:18 -08:00
ktims 4aa7e9f43c day3: perf - branchless 2024-12-12 17:56:28 -08:00
ktims a5439062a4 day3: performance - avoid converting &[u8] to &str 2024-12-12 17:38:42 -08:00
ktims 3658183deb day7: performance. DFS with pruning. 2024-12-12 16:02:13 -08:00
ktims 38cba37b06 day5: perf: switch to sort-based implementation 2024-12-12 14:50:00 -08:00
ktims 6022d2cc39 multiple: Use FxHashMap for s p e e d 2024-12-12 14:07:22 -08:00
ktims 447ff5c62c grid: improve ergonomics with more trait impls and other improvements
update puzzles to pass tests, some performance gains
2024-12-12 02:14:29 -08:00
ktims c213bbbc27 day12: optimization and cleanup 2024-12-12 01:24:14 -08:00
ktims a56fc933c9 day12: complete solution 2024-12-11 22:27:59 -08:00
ktims 31eb500832 day7: slight performance improvement from skipping ThreadLoacls 2024-12-11 19:40:45 -08:00
ktims 4c14c6092e bugfix: count off by one, thought ^ was left in the map, but it gets
replaced by X
2024-12-11 18:59:58 -08:00
ktims de535303d4 day11: don't use aoc_generator 2024-12-11 18:43:57 -08:00
ktims 50b6d045e7 multiple: genericize Grid over coordinate type, parallelism for day 11 2024-12-11 18:43:13 -08:00
ktims d2defae8a2 chore: make day modules public 2024-12-11 18:40:53 -08:00
ktims cd8900d936 chore: enable LTO for release builds 2024-12-11 18:40:29 -08:00
ktims 11b29a4d57 chore: refactor for cargo-aoc / codspeed 2024-12-11 15:45:52 -08:00
ktims 3bfde9fd9b day11: some cleanup, slight performance 2024-12-11 03:11:17 -08:00
ktims 2e239681ce day11: performance 2024-12-11 00:55:47 -08:00
ktims a7354b6ed7 day11: part 2 solution 2024-12-10 23:40:03 -08:00
ktims 462918b382 day11: part 1 solution 2024-12-10 21:55:00 -08:00
ktims 8af11a6092 day10: performance. slight gain from memoizing visited positions in p1. 2024-12-10 17:07:00 -08:00
ktims d9d55b069f day10: optimization
Part 2 doesn't actually require tracking state at all, it's enough to
just follow the rules and count every DFS that lands on a target square.

Part 1 optimized by only tracking which targets have been previously
visited, instead of all squares.

Both parts, pass position reference to recursive calls instead of by
value for tiny improvement.
2024-12-10 16:20:15 -08:00
ktims 0716dde8b1 day10: complete solution 2024-12-09 21:59:39 -08:00
ktims 206c1fca85 day9: optimize part 2 2024-12-09 00:23:40 -08:00
ktims f7cf4f1e9f day9: optimize part 1 2024-12-08 23:58:47 -08:00
ktims b08c8fbd80 day9: use part 2 'inodes' table to speed up part 1 2024-12-08 23:51:51 -08:00
ktims 2bc751dd0d day9: complete solution
previous commit should actually work for part 1 if you don't truncate
the input.
2024-12-08 23:34:15 -08:00
ktims a6ea5b4155 day9: second rewrite, still failing 2024-12-08 22:57:20 -08:00
ktims 622877843e day8: refactor and cleanup 2024-12-07 22:49:57 -08:00
ktims 47e40942e2 day8: complete solution 2024-12-07 21:43:56 -08:00