Use itertools to chain sorting in day 5

This commit is contained in:
George Thomas 2026-01-07 15:02:13 +00:00
parent 3d2785b7d3
commit 5e7baf8cc5
3 changed files with 19 additions and 3 deletions

16
rust/Cargo.lock generated
View File

@ -6,9 +6,25 @@ version = 4
name = "aoc"
version = "0.1.0"
dependencies = [
"itertools",
"nom",
]
[[package]]
name = "either"
version = "1.15.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719"
[[package]]
name = "itertools"
version = "0.14.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285"
dependencies = [
"either",
]
[[package]]
name = "memchr"
version = "2.7.6"

View File

@ -8,4 +8,5 @@ path = "main.rs"
name = "aoc"
[dependencies]
itertools = "0.14"
nom = "8.0.0"

View File

@ -1,4 +1,5 @@
use crate::puzzle::Puzzle;
use itertools::Itertools;
use nom::{
Parser,
character::complete::{char, newline, usize},
@ -35,10 +36,8 @@ pub const PUZZLE: Puzzle<(Vec<Range>, Vec<usize>), 2> = Puzzle {
.to_string()
},
|(ranges, _)| {
let mut sorted_ranges = ranges.clone();
sorted_ranges.sort_by_key(|r| r.lower);
let mut merged = Ranges::new();
for r in sorted_ranges {
for r in ranges.iter().cloned().sorted_by_key(|r| r.lower) {
merged.add(r);
}
merged.total_length().to_string()