mirror of
https://github.com/Noratrieb/advent-of-code.git
synced 2026-01-16 10:35:02 +01:00
2022 day01
This commit is contained in:
parent
fd2ea0612b
commit
e153ec51cd
20 changed files with 3180 additions and 82 deletions
59
2022/day01/src/lib.rs
Normal file
59
2022/day01/src/lib.rs
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
use helper::{parse_unwrap, Day, Variants};
|
||||
|
||||
pub fn main() {
|
||||
helper::main::<Day01>(include_str!("../input.txt"));
|
||||
}
|
||||
|
||||
struct Day01;
|
||||
|
||||
helper::define_variants! {
|
||||
day => crate::Day01;
|
||||
part1 {
|
||||
basic => crate::part1;
|
||||
}
|
||||
part2 {
|
||||
basic => crate::part2;
|
||||
}
|
||||
}
|
||||
|
||||
impl Day for Day01 {
|
||||
fn part1() -> Variants {
|
||||
part1_variants!(construct_variants)
|
||||
}
|
||||
|
||||
fn part2() -> Variants {
|
||||
part2_variants!(construct_variants)
|
||||
}
|
||||
}
|
||||
|
||||
fn part1(input: &str) -> u64 {
|
||||
input
|
||||
.trim()
|
||||
.split("\n\n")
|
||||
.map(|elf| elf.trim().split("\n").map(parse_unwrap).sum())
|
||||
.max()
|
||||
.unwrap()
|
||||
}
|
||||
|
||||
fn part2(input: &str) -> u64 {
|
||||
let mut all = input
|
||||
.trim()
|
||||
.split("\n\n")
|
||||
.map(|elf| elf.trim().split("\n").map(parse_unwrap).sum())
|
||||
.collect::<Vec<u64>>();
|
||||
all.sort();
|
||||
all[(all.len() - 3)..].iter().copied().sum::<u64>()
|
||||
}
|
||||
|
||||
helper::tests! {
|
||||
day01 Day01;
|
||||
part1 {
|
||||
small => 24000;
|
||||
default => 70698;
|
||||
}
|
||||
part2 {
|
||||
small => 45000;
|
||||
default => 206643;
|
||||
}
|
||||
}
|
||||
helper::benchmarks! {}
|
||||
3
2022/day01/src/main.rs
Normal file
3
2022/day01/src/main.rs
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
fn main() {
|
||||
day01::main();
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue