Remove compiler warnings from day 5, 6 & 7
parent
4f5cf2e4c4
commit
44079842d2
|
|
@ -6,11 +6,8 @@ pub fn answer(text: String) -> (u128, u128) {
|
||||||
None => return ( 0, 0 ),
|
None => return ( 0, 0 ),
|
||||||
};
|
};
|
||||||
|
|
||||||
let mut ranges: Vec<Range> = r
|
let ranges: Vec<Range> = build_ranges(r);
|
||||||
.split_whitespace()
|
// merge_ranges(&mut ranges);
|
||||||
.map(|s| Range::from(s).unwrap())
|
|
||||||
.collect();
|
|
||||||
merge_ranges(&mut ranges);
|
|
||||||
|
|
||||||
( ingredients.split_whitespace()
|
( ingredients.split_whitespace()
|
||||||
.map(|s| utils::str_to_u128(s).unwrap())
|
.map(|s| utils::str_to_u128(s).unwrap())
|
||||||
|
|
@ -68,37 +65,33 @@ impl Range {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn merge_ranges(ranges: &mut Vec<Range>) {
|
fn build_ranges(s : &str) -> Vec<Range> {
|
||||||
// let mut merged: Vec<Range> = Vec::new();
|
let mut ranges: Vec<Range> = Vec::new();
|
||||||
|
|
||||||
for i in 0..ranges.len() {
|
let mut unfiltered_ranges: Vec<Range> = s
|
||||||
loop {
|
.split_whitespace()
|
||||||
let mut to_merge : Option<( usize, usize, Range )> = None;
|
.filter_map(Range::from)
|
||||||
|
.collect();
|
||||||
|
unfiltered_ranges.sort_by(|a, b| a.low.cmp(&b.low));
|
||||||
|
|
||||||
if let Some(r1) = ranges.get(i) {
|
for new_range in unfiltered_ranges {
|
||||||
for j in (i+1)..ranges.len() {
|
let mut inserted: bool = false;
|
||||||
if let Some(r2) = ranges.get(j) {
|
|
||||||
match r1.overlaps_with(r2) {
|
for range in ranges.iter_mut() {
|
||||||
Some(r3) => {
|
match range.overlaps_with(&new_range) {
|
||||||
to_merge = Some(( i, j, r3 ));
|
Some(overlapping_range) => {
|
||||||
break;
|
*range = overlapping_range;
|
||||||
},
|
inserted = true;
|
||||||
None => {},
|
break;
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
match to_merge {
|
|
||||||
Some(( i, j, x )) => {
|
|
||||||
ranges.remove(j);
|
|
||||||
ranges.remove(i);
|
|
||||||
ranges.push(x);
|
|
||||||
},
|
},
|
||||||
None => { break; },
|
None => {},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if !inserted {
|
||||||
|
ranges.push(new_range);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ranges
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -16,11 +16,13 @@ pub fn answer(text : String) -> (u64, u64) {
|
||||||
let numbers = (0..(col-1))
|
let numbers = (0..(col-1))
|
||||||
.filter_map(|y| utils::str_to_u64(untransposed_math[y][x]));
|
.filter_map(|y| utils::str_to_u64(untransposed_math[y][x]));
|
||||||
|
|
||||||
match untransposed_math[col-1][x] {
|
let out: u64 = match untransposed_math[col-1][x] {
|
||||||
"+" => numbers.sum(),
|
"+" => numbers.sum::<u64>(),
|
||||||
"*" => numbers.product(),
|
"*" => numbers.product(),
|
||||||
_ => { panic!("Unknown operation!"); 0 },
|
_ => { panic!("Unknown operation!"); },
|
||||||
}
|
};
|
||||||
|
|
||||||
|
out
|
||||||
}).sum()
|
}).sum()
|
||||||
// Part 2
|
// Part 2
|
||||||
, read_columns(text)
|
, read_columns(text)
|
||||||
|
|
@ -45,7 +47,7 @@ fn read_columns(text : String) -> u64 {
|
||||||
};
|
};
|
||||||
|
|
||||||
// Collect the vertical number
|
// Collect the vertical number
|
||||||
for y in (0..(height-1)) {
|
for y in 0..(height-1) {
|
||||||
match utils::char_to_u64(grid[y][x]) {
|
match utils::char_to_u64(grid[y][x]) {
|
||||||
Some(n) => { number = number * 10 + n; }
|
Some(n) => { number = number * 10 + n; }
|
||||||
None => {},
|
None => {},
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
use crate::utils;
|
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
|
|
||||||
pub fn answer(text : String) -> ( u16, u64 ) {
|
pub fn answer(text : String) -> ( u16, u64 ) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue