diff --git a/src/common/input.rs b/src/common/input.rs index cbd4e26..ab9b86e 100644 --- a/src/common/input.rs +++ b/src/common/input.rs @@ -4,13 +4,12 @@ use std::path::Path; pub fn read_file(name: &str) -> String { let path = Path::new("src").join(name).join("input.txt"); - let mut file = File::open(&path) - .expect(&format!("Unable to open input for '{name}'.")); - + let mut file = File::open(&path).expect(&format!("Unable to open input for '{name}'.")); + let mut contents = String::new(); file.read_to_string(&mut contents) .expect(&format!("Unable to read input for '{name}'.")); - + contents } @@ -23,6 +22,6 @@ pub fn read_stdin() -> String { io::stdin() .read_line(&mut input) .expect("Failed to read line!"); - + input } diff --git a/src/common/vectorize.rs b/src/common/vectorize.rs index 0e460f5..3a68e1f 100644 --- a/src/common/vectorize.rs +++ b/src/common/vectorize.rs @@ -9,14 +9,13 @@ pub fn split_lines(input: &str) -> Vec { } pub fn match_input(entry: &str, re: &str) -> Vec { - let regex = Regex::new(re) - .expect("Invalid regex provided!"); - + let regex = Regex::new(re).expect("Invalid regex provided!"); + let matches: Vec = regex .find_iter(entry) .map(|m| m.as_str().to_string()) .collect(); - + matches } @@ -35,13 +34,13 @@ pub fn convert_num(input: Vec>) -> Vec> { input .into_iter() .map(|a| { - a - .into_iter() + a.into_iter() .map(|b| { - b - .trim() - .parse::() + b.trim() + .parse::() .expect("Invalid numeric value in input!") - }).collect() - }).collect() + }) + .collect() + }) + .collect() } diff --git a/src/day09/mod.rs b/src/day09/mod.rs index 2b90ccf..8da849b 100644 --- a/src/day09/mod.rs +++ b/src/day09/mod.rs @@ -1,4 +1,4 @@ -use crate::common::{convert_num, read_file, match_inputs, split_lines}; +use crate::common::{convert_num, match_inputs, read_file, split_lines}; #[allow(dead_code)] pub fn part_two() { @@ -18,85 +18,48 @@ fn predict(forward: bool) { let current = s.to_vec(); let mut next = extra_diff(current); expand(&mut next, forward); - let history = next - .first() - .unwrap(); - + let history = next.first().unwrap(); + if forward { - history - .last() - .unwrap() - .clone() + history.last().unwrap().clone() } else { - history - .first() - .unwrap() - .clone() + history.first().unwrap().clone() } }) .collect(); - - let sum: i32 = predictions - .iter() - .sum(); + + let sum: i32 = predictions.iter().sum(); println!("The sum of all prediction values is: '{sum}'."); } fn expand(strct: &mut Vec>, forward: bool) { - let last = strct - .last_mut() - .unwrap(); - last.push(*last - .last() - .unwrap() - ); + let last = strct.last_mut().unwrap(); + last.push(*last.last().unwrap()); for i in (0..strct.len() - 1).rev() { - let last = strct - .get(i + 1) - .unwrap() - .clone(); - let current = strct - .get_mut(i) - .unwrap(); - + let last = strct.get(i + 1).unwrap().clone(); + let current = strct.get_mut(i).unwrap(); if forward { - current.push( - current - .last() - .unwrap() - .clone() + - last - .last() - .unwrap() - .clone() - ); + current.push(current.last().unwrap().clone() + last.last().unwrap().clone()); } else { current.insert( 0, - current - .first() - .unwrap() - .clone() - - last - .first() - .unwrap() - .clone() + current.first().unwrap().clone() - last.first().unwrap().clone(), ); } } } fn extra_diff(seq: Vec) -> Vec> { - let mut structure = vec![seq]; + let mut structure = vec![seq]; let mut index = 0; loop { let current = &structure[index]; let diff = seq_diff(current.to_vec()); - + if diff.iter().all(|&n| n == 0) { break structure; } @@ -119,7 +82,7 @@ fn seq_diff(seq: Vec) -> Vec { fn setup() -> Vec> { let name = "day09"; println!("Executing module '{name}' entrypoint . . . "); - + let content = read_file(name); let lines = split_lines(&content); let input = match_inputs(lines, &r"\s*-?\d+\s*"); diff --git a/src/day11/mod.rs b/src/day11/mod.rs index 2400d8a..0c7823a 100644 --- a/src/day11/mod.rs +++ b/src/day11/mod.rs @@ -1,9 +1,7 @@ -use crate::common::{read_file, match_inputs, split_lines}; +use crate::common::{match_inputs, read_file, split_lines}; #[allow(dead_code)] -pub fn part_two() { - -} +pub fn part_two() {} #[allow(dead_code)] pub fn part_one() { @@ -21,7 +19,9 @@ fn sum_dist(galaxies: Vec) -> usize { for (i, a) in galaxies.iter().enumerate() { for b in galaxies.iter().skip(i) { - if b.compare(a) { continue; } + if b.compare(a) { + continue; + } distances += a.distance(b); } } @@ -31,10 +31,12 @@ fn sum_dist(galaxies: Vec) -> usize { fn extract(symbols: Vec>) -> Vec { let mut galaxies = Vec::new(); - + for (y, line) in symbols.iter().enumerate() { for (x, symbol) in line.iter().enumerate() { - if symbol.as_str() == "." { continue; } + if symbol.as_str() == "." { + continue; + } galaxies.push(Galaxy { x, y }); } } @@ -42,9 +44,7 @@ fn extract(symbols: Vec>) -> Vec { galaxies } -fn expand(galaxies: &mut Vec) { - -} +fn expand(galaxies: &mut Vec) {} struct Galaxy { x: usize, @@ -66,7 +66,7 @@ impl Galaxy { fn setup() -> Vec> { let name = "day11"; println!("Executing module '{name}' entrypoint . . . "); - + let content = read_file(name); let lines = split_lines(&content); match_inputs(lines, &r".") diff --git a/src/main.rs b/src/main.rs index 4ca4a6f..4a58716 100644 --- a/src/main.rs +++ b/src/main.rs @@ -8,10 +8,10 @@ mod day11; fn main() { println!("Executing main entrypoint . . . "); let now = Instant::now(); - + // day09::part_one(); // day09::part_two(); - + day11::part_one(); // day11::part_two();