mirror of
https://github.com/Noratrieb/advent-of-code.git
synced 2026-01-14 09:35:01 +01:00
optimize day 1 2022
This commit is contained in:
parent
e153ec51cd
commit
94a69f00d5
1 changed files with 34 additions and 2 deletions
|
|
@ -1,3 +1,5 @@
|
||||||
|
#![feature(iter_array_chunks)]
|
||||||
|
|
||||||
use helper::{parse_unwrap, Day, Variants};
|
use helper::{parse_unwrap, Day, Variants};
|
||||||
|
|
||||||
pub fn main() {
|
pub fn main() {
|
||||||
|
|
@ -12,7 +14,8 @@ helper::define_variants! {
|
||||||
basic => crate::part1;
|
basic => crate::part1;
|
||||||
}
|
}
|
||||||
part2 {
|
part2 {
|
||||||
basic => crate::part2;
|
basic => crate::part2_basic;
|
||||||
|
no_alloc => crate::part2_no_alloc;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -35,7 +38,7 @@ fn part1(input: &str) -> u64 {
|
||||||
.unwrap()
|
.unwrap()
|
||||||
}
|
}
|
||||||
|
|
||||||
fn part2(input: &str) -> u64 {
|
fn part2_basic(input: &str) -> u64 {
|
||||||
let mut all = input
|
let mut all = input
|
||||||
.trim()
|
.trim()
|
||||||
.split("\n\n")
|
.split("\n\n")
|
||||||
|
|
@ -45,6 +48,35 @@ fn part2(input: &str) -> u64 {
|
||||||
all[(all.len() - 3)..].iter().copied().sum::<u64>()
|
all[(all.len() - 3)..].iter().copied().sum::<u64>()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
fn part2_no_alloc(input: &str) -> u64 {
|
||||||
|
let mut biggest = [0; 3];
|
||||||
|
|
||||||
|
let elves = input
|
||||||
|
.trim()
|
||||||
|
.split("\n\n")
|
||||||
|
.map(|elf| elf.trim().split("\n").map(parse_unwrap).sum::<u64>());
|
||||||
|
|
||||||
|
for elf in elves {
|
||||||
|
if elf > biggest[0] {
|
||||||
|
if elf > biggest[1] {
|
||||||
|
if elf > biggest[2] {
|
||||||
|
biggest[0] = biggest[1];
|
||||||
|
biggest[1] = biggest[2];
|
||||||
|
biggest[2] = elf;
|
||||||
|
} else {
|
||||||
|
biggest[0] = biggest[1];
|
||||||
|
biggest[1] = elf;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
biggest[0] = elf;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
biggest[0] + biggest[1] + biggest[2]
|
||||||
|
}
|
||||||
|
|
||||||
helper::tests! {
|
helper::tests! {
|
||||||
day01 Day01;
|
day01 Day01;
|
||||||
part1 {
|
part1 {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue