init
This commit is contained in:
30
d01/src/a1.rs
Normal file
30
d01/src/a1.rs
Normal file
@ -0,0 +1,30 @@
|
||||
|
||||
|
||||
pub fn run(inp :Vec<String>) {
|
||||
|
||||
let mut max = 0;
|
||||
let mut curr_max = 0;
|
||||
|
||||
inp.iter().for_each(|elem| {
|
||||
|
||||
let number = elem.parse::<i32>();
|
||||
|
||||
match number {
|
||||
Ok(n) => {
|
||||
curr_max += n;
|
||||
}
|
||||
|
||||
|
||||
Err(_) => {
|
||||
curr_max = 0;
|
||||
}
|
||||
}
|
||||
|
||||
if curr_max > max {
|
||||
max = curr_max;
|
||||
}
|
||||
});
|
||||
|
||||
println!("a1: {}", max);
|
||||
|
||||
}
|
36
d01/src/a2.rs
Normal file
36
d01/src/a2.rs
Normal file
@ -0,0 +1,36 @@
|
||||
|
||||
|
||||
pub fn run(inp :Vec<String>) {
|
||||
|
||||
let mut curr_max = 0;
|
||||
|
||||
let mut elves :Vec<i32> = vec![];
|
||||
|
||||
inp.iter().for_each(|elem| {
|
||||
|
||||
let number = elem.parse::<i32>();
|
||||
|
||||
match number {
|
||||
Ok(n) => {
|
||||
curr_max += n;
|
||||
}
|
||||
|
||||
Err(_) => {
|
||||
elves.push(curr_max);
|
||||
curr_max = 0;
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
let mut sum = 0;
|
||||
|
||||
for _ in 0..3 {
|
||||
let e = elves.iter_mut().max().unwrap();
|
||||
sum += *e;
|
||||
*e = 0;
|
||||
}
|
||||
|
||||
println!("a2: {}", sum);
|
||||
|
||||
}
|
20
d01/src/a2v2.rs
Normal file
20
d01/src/a2v2.rs
Normal file
@ -0,0 +1,20 @@
|
||||
|
||||
|
||||
pub fn run(inp :Vec<String>) {
|
||||
|
||||
let mut v :Vec<i32> = vec![];
|
||||
inp.split(|line| line.is_empty()).for_each(|vector|{
|
||||
v.push(vector.iter().map(|s| s.parse::<i32>().unwrap()).sum());
|
||||
});
|
||||
|
||||
let mut sum = 0;
|
||||
|
||||
for _ in 0..3 {
|
||||
let e = v.iter_mut().max().unwrap();
|
||||
sum += *e;
|
||||
*e = 0;
|
||||
}
|
||||
|
||||
println!("a2v2: {}", sum);
|
||||
|
||||
}
|
44
d01/src/main.rs
Normal file
44
d01/src/main.rs
Normal file
@ -0,0 +1,44 @@
|
||||
use std::io::BufRead;
|
||||
|
||||
mod a1;
|
||||
mod a2;
|
||||
mod a2v2;
|
||||
|
||||
fn read_file(path :&str) -> Vec<String> {
|
||||
|
||||
let file = std::fs::File::open(path);
|
||||
|
||||
return match file {
|
||||
|
||||
Ok(handle) => {
|
||||
|
||||
let reader = std::io::BufReader::new(handle);
|
||||
|
||||
let mut vec : Vec<String> = vec![];
|
||||
|
||||
reader.lines().for_each(|elem| {
|
||||
vec.push(elem.unwrap());
|
||||
});
|
||||
|
||||
vec
|
||||
|
||||
}
|
||||
|
||||
Err(_) => vec![]
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
fn main() {
|
||||
|
||||
let inp :Vec<String> = read_file("input.txt");
|
||||
|
||||
a1::run(inp.clone());
|
||||
|
||||
a2::run(inp.clone());
|
||||
|
||||
a2v2::run(inp);
|
||||
|
||||
}
|
Reference in New Issue
Block a user