38 Commits

Author SHA1 Message Date
George Thomas
be0bfd0545 Pass is_real_data to parsers
As in Haskell, we'll need this for some awkward problems.
2026-01-14 01:03:07 +00:00
George Thomas
19d402ec8f Refactor to use filter_map 2026-01-13 14:16:43 +00:00
George Thomas
cb7b821434 Move to avoid allocation 2026-01-13 14:16:40 +00:00
George Thomas
6ec723ea69 Minor refactor 2026-01-13 12:00:45 +00:00
George Thomas
b7cda0a0ec Always show Rust test timings
Matches the Haskell now that we're no longer using Sydtest.
2026-01-13 12:00:45 +00:00
George Thomas
2462a30b1d Solve day 7 in Rust 2026-01-12 18:51:39 +00:00
George Thomas
3daa7a1ad1 Solve day 6 in Rust 2026-01-12 18:51:39 +00:00
George Thomas
bb6bd7ff25 Rename function 2026-01-07 15:06:48 +00:00
George Thomas
5e7baf8cc5 Use itertools to chain sorting in day 5 2026-01-07 15:02:13 +00:00
George Thomas
3d2785b7d3 Make Rust day 5 vector operations more efficient
We do more in-place and operate on the end of the vector to avoid quadratic complexity.
2026-01-07 14:45:55 +00:00
George Thomas
70b56f4501 Use new type for day 5 ranges
This is cleaner and faster, with inherent methods and mutability.
2026-01-07 14:29:47 +00:00
George Thomas
88c138baf0 Solve day 5 in Rust 2026-01-07 14:05:58 +00:00
George Thomas
bf1cac4e94 Use proper Nom number parsing functions
This was previously a documentation/discoverability issue, rather than a conscious choice to avoid these.
2026-01-07 13:41:03 +00:00
George Thomas
50e3119aef Minor refactor 2025-12-23 15:13:25 +00:00
George Thomas
6f5a56acd9 Simplify test result printing 2025-12-23 15:11:52 +00:00
George Thomas
f3247b2e9c Combine test result printing in to single expression 2025-12-23 13:43:09 +00:00
George Thomas
d80fdfabdd Avoid printing redundant space 2025-12-23 12:18:05 +00:00
George Thomas
6bc342ba22 Format 2025-12-23 11:31:41 +00:00
George Thomas
1d552fab86 Simplify Rust test newline handling 2025-12-23 11:31:22 +00:00
George Thomas
4c05c068fa Show duration for long-running Rust tests
This roughly matches Tasty's behaviour.
2025-12-23 11:00:32 +00:00
George Thomas
4dc49febe4 Refactor puzzle existential wrapper to take callback
This gives us more flexibility to do things between the parts.
2025-12-23 10:59:18 +00:00
George Thomas
9fdd0cc28e Solve day 4 in Rust 2025-12-22 19:00:09 +00:00
George Thomas
3114920494 Remove redundant constraint 2025-12-22 14:53:22 +00:00
George Thomas
4a3506a58d Swap findMax result tuple order 2025-12-19 15:57:11 +00:00
George Thomas
17f4b83fc0 Dereference at call site 2025-12-19 15:57:06 +00:00
George Thomas
73ea25236f Improve error handling by not panicking in helper function 2025-12-19 15:34:13 +00:00
George Thomas
83e957d5f9 Fix day 3 error case
This doesn't actually matter for the input data given, but it ensures we get the right error when the battery list is too short, instead of unwrapping.
2025-12-19 15:14:39 +00:00
George Thomas
2258f965c1 Solve day 3 in Rust 2025-12-19 14:51:36 +00:00
George Thomas
a321ce3f22 Revert "Minor refactor (inlining)"
This reverts commit bb57673f8a01e77e42c38bbf5bab60fba8c63098.

Actually, the symmetry with `is_repetition_2` is worth the slight extra verbosity.
2025-12-18 13:01:07 +00:00
George Thomas
bb57673f8a Minor refactor (inlining) 2025-12-18 13:00:55 +00:00
George Thomas
dc36ba47ff Avoid unnecessary slice operator 2025-12-17 14:25:10 +00:00
George Thomas
437c2f290d Use strings for output types in Rust
This is a compromise that gets us most of the way towards what we have with the heterogeneous list in Haskell, but without any complex abstractions.
2025-12-16 17:38:53 +00:00
George Thomas
c4c2c82f81 Remove redundant type annotation 2025-12-10 21:58:57 +00:00
George Thomas
415ed20dd5 Use Nom for Rust parsing 2025-12-10 12:39:12 +00:00
George Thomas
fa6f734286 Solve day 2 in Rust 2025-12-10 10:51:30 +00:00
George Thomas
abda4f84d8 Solve day 1 in Rust 2025-12-09 19:18:28 +00:00
George Thomas
238e26dccf Move all Rust stuff in to subdirectory 2025-12-02 18:38:21 +00:00
George Thomas
3a00dc568f Rename Rust source folder 2025-12-02 18:38:09 +00:00