advent-of-code/2022/src/bin/day01.rs

46 lines
763 B
Rust
Raw Normal View History

2022-12-01 14:25:17 +01:00
#![feature(binary_heap_into_iter_sorted, test)]
2022-12-01 06:12:16 +01:00
extern crate test;
2022-12-01 12:07:38 +01:00
use std::collections::BinaryHeap;
2022-12-01 06:12:16 +01:00
use aoc2022::{boilerplate, common::*};
2022-12-05 11:35:34 +01:00
const DAY: usize = 1;
2022-12-01 14:25:17 +01:00
type Parsed = BinaryHeap<usize>;
2022-12-01 06:12:16 +01:00
fn parse_input(raw: &str) -> Parsed {
raw.split("\n\n").map(|elf| elf.lines().map(parse_num::<usize>).sum()).collect()
}
fn part1(parsed: &Parsed) -> usize {
2022-12-01 14:25:17 +01:00
*parsed.peek().unwrap()
2022-12-01 06:12:16 +01:00
}
fn part2(parsed: &Parsed) -> usize {
2022-12-01 14:25:17 +01:00
parsed.clone().into_iter_sorted().take(3).sum()
2022-12-01 06:12:16 +01:00
}
boilerplate! {
2022-12-09 12:50:12 +01:00
TEST_INPUT == "\
1000
2022-12-01 06:12:16 +01:00
2000
3000
4000
5000
6000
7000
8000
9000
10000",
tests: {
part1: { TEST_INPUT => 24000 },
part2: { TEST_INPUT => 45000 },
},
bench1 == 72017,
bench2 == 212520,
2022-12-01 14:25:17 +01:00
bench_parse: BinaryHeap::len => 242,
2022-12-01 06:12:16 +01:00
}