feat: cheeky day 3 part 1 solution
This commit is contained in:
parent
dcf2fa1294
commit
c0acf9524a
3 changed files with 43 additions and 0 deletions
38
src/day3.rs
Normal file
38
src/day3.rs
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
use std::fs;
|
||||||
|
fn check_mul(instruction: &str) -> bool {
|
||||||
|
if instruction.find(',').is_none() { return false; }
|
||||||
|
let (first_part, second_part) = instruction.split_once(',').expect("Expected mul to split");
|
||||||
|
let first_num = &first_part[4..];
|
||||||
|
let second_num = &second_part[..second_part.len() - 1];
|
||||||
|
for digit in first_num.chars() {
|
||||||
|
if !digit.is_numeric() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for digit in second_num.chars() {
|
||||||
|
if !digit.is_numeric() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
true
|
||||||
|
}
|
||||||
|
fn eval_mul(instruction: &str) -> i32 {
|
||||||
|
let (first_part, second_part) = instruction.split_once(',').expect("Expected mul to split");
|
||||||
|
let first_num = str::parse::<i32>(&first_part[4..]).expect("Expect parse success");
|
||||||
|
let second_num =
|
||||||
|
str::parse::<i32>(&second_part[..second_part.len() - 1]).expect("Expect parse success");
|
||||||
|
first_num * second_num
|
||||||
|
}
|
||||||
|
pub fn part1(input_file_path: &str) {
|
||||||
|
let raw_str = fs::read_to_string(input_file_path).expect("File read error!!");
|
||||||
|
let mut total: i32 = 0;
|
||||||
|
raw_str.rmatch_indices("mul(").for_each(|(index, string)| {
|
||||||
|
println!("{} --> {}", index, string);
|
||||||
|
let tmp = raw_str.split_at(index).1;
|
||||||
|
let end_index = tmp.find(')').expect("expected a closure");
|
||||||
|
let trim_str = tmp.split_at(end_index + 1).0;
|
||||||
|
println!("{}", trim_str);
|
||||||
|
total += if check_mul(trim_str) {eval_mul(trim_str)} else {0};
|
||||||
|
});
|
||||||
|
println!("Eval result: {}", total);
|
||||||
|
}
|
|
@ -4,9 +4,11 @@ use std::{
|
||||||
};
|
};
|
||||||
mod day1;
|
mod day1;
|
||||||
mod day2;
|
mod day2;
|
||||||
|
mod day3;
|
||||||
fn main() {
|
fn main() {
|
||||||
day1::part1("./day1.input");
|
day1::part1("./day1.input");
|
||||||
day1::part2("./day1.input");
|
day1::part2("./day1.input");
|
||||||
day2::part1("./day2.input");
|
day2::part1("./day2.input");
|
||||||
day2::part2("./day2.input");
|
day2::part2("./day2.input");
|
||||||
|
day3::part1("./day3.input");
|
||||||
}
|
}
|
||||||
|
|
3
src/test.rs
Normal file
3
src/test.rs
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
fn main(
|
||||||
|
|
||||||
|
)
|
Loading…
Add table
Add a link
Reference in a new issue