Remove compiler warnings from day 5, 6 & 7

bram
Bram 2025-12-08 00:36:17 +01:00
parent 4f5cf2e4c4
commit 44079842d2
3 changed files with 32 additions and 38 deletions

View File

@ -6,11 +6,8 @@ pub fn answer(text: String) -> (u128, u128) {
None => return ( 0, 0 ),
};
let mut ranges: Vec<Range> = r
.split_whitespace()
.map(|s| Range::from(s).unwrap())
.collect();
merge_ranges(&mut ranges);
let ranges: Vec<Range> = build_ranges(r);
// merge_ranges(&mut ranges);
( ingredients.split_whitespace()
.map(|s| utils::str_to_u128(s).unwrap())
@ -68,37 +65,33 @@ impl Range {
}
}
fn merge_ranges(ranges: &mut Vec<Range>) {
// let mut merged: Vec<Range> = Vec::new();
fn build_ranges(s : &str) -> Vec<Range> {
let mut ranges: Vec<Range> = Vec::new();
for i in 0..ranges.len() {
loop {
let mut to_merge : Option<( usize, usize, Range )> = None;
let mut unfiltered_ranges: Vec<Range> = s
.split_whitespace()
.filter_map(Range::from)
.collect();
unfiltered_ranges.sort_by(|a, b| a.low.cmp(&b.low));
if let Some(r1) = ranges.get(i) {
for j in (i+1)..ranges.len() {
if let Some(r2) = ranges.get(j) {
match r1.overlaps_with(r2) {
Some(r3) => {
to_merge = Some(( i, j, r3 ));
break;
},
None => {},
}
}
}
} else {
break;
}
match to_merge {
Some(( i, j, x )) => {
ranges.remove(j);
ranges.remove(i);
ranges.push(x);
for new_range in unfiltered_ranges {
let mut inserted: bool = false;
for range in ranges.iter_mut() {
match range.overlaps_with(&new_range) {
Some(overlapping_range) => {
*range = overlapping_range;
inserted = true;
break;
},
None => { break; },
None => {},
}
}
if !inserted {
ranges.push(new_range);
}
}
ranges
}

View File

@ -16,11 +16,13 @@ pub fn answer(text : String) -> (u64, u64) {
let numbers = (0..(col-1))
.filter_map(|y| utils::str_to_u64(untransposed_math[y][x]));
match untransposed_math[col-1][x] {
"+" => numbers.sum(),
let out: u64 = match untransposed_math[col-1][x] {
"+" => numbers.sum::<u64>(),
"*" => numbers.product(),
_ => { panic!("Unknown operation!"); 0 },
}
_ => { panic!("Unknown operation!"); },
};
out
}).sum()
// Part 2
, read_columns(text)
@ -45,7 +47,7 @@ fn read_columns(text : String) -> u64 {
};
// Collect the vertical number
for y in (0..(height-1)) {
for y in 0..(height-1) {
match utils::char_to_u64(grid[y][x]) {
Some(n) => { number = number * 10 + n; }
None => {},

View File

@ -1,4 +1,3 @@
use crate::utils;
use std::collections::HashMap;
pub fn answer(text : String) -> ( u16, u64 ) {