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 ),
|
||||
};
|
||||
|
||||
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
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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 => {},
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
use crate::utils;
|
||||
use std::collections::HashMap;
|
||||
|
||||
pub fn answer(text : String) -> ( u16, u64 ) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue