64 lines
1.3 KiB
Rust
64 lines
1.3 KiB
Rust
pub fn part_one(input: &str) -> Option<u32> {
|
|
let inlines = input.split("\n");
|
|
let mut count: u32 = 0;
|
|
let mut elves: Vec<u32> = vec![];
|
|
for l in inlines {
|
|
match l {
|
|
"" => { elves.push(count); count = 0},
|
|
_ => { count += l.parse::<u32>().unwrap() }
|
|
}
|
|
}
|
|
|
|
let mut largest = 0;
|
|
|
|
for e in elves {
|
|
if e > largest {
|
|
largest = e;
|
|
}
|
|
}
|
|
|
|
Some(largest)
|
|
}
|
|
|
|
pub fn part_two(input: &str) -> Option<u32> {
|
|
let inlines = input.split("\n");
|
|
let mut count: u32 = 0;
|
|
let mut elves: Vec<u32> = vec![];
|
|
for l in inlines {
|
|
match l {
|
|
"" => { elves.push(count); count = 0},
|
|
_ => { count += l.parse::<u32>().unwrap() }
|
|
}
|
|
}
|
|
|
|
elves.sort();
|
|
elves.reverse();
|
|
elves.truncate(3);
|
|
|
|
Some(elves.iter().sum::<u32>())
|
|
|
|
}
|
|
|
|
fn main() {
|
|
let input = &advent_of_code::read_file("inputs", 1);
|
|
advent_of_code::solve!(1, part_one, input);
|
|
advent_of_code::solve!(2, part_two, input);
|
|
}
|
|
|
|
#[cfg(test)]
|
|
mod tests {
|
|
use super::*;
|
|
|
|
#[test]
|
|
fn test_part_one() {
|
|
let input = advent_of_code::read_file("examples", 1);
|
|
assert_eq!(part_one(&input), Some(24000));
|
|
}
|
|
|
|
#[test]
|
|
fn test_part_two() {
|
|
let input = advent_of_code::read_file("examples", 1);
|
|
assert_eq!(part_two(&input), None);
|
|
}
|
|
}
|