naive solution for 2022/02
This commit is contained in:
parent
8e47158ba1
commit
515bc5f96f
2500
2022/inputs/day02
Normal file
2500
2022/inputs/day02
Normal file
File diff suppressed because it is too large
Load Diff
47
2022/src/bin/day02.rs
Normal file
47
2022/src/bin/day02.rs
Normal file
@ -0,0 +1,47 @@
|
||||
#![feature(iter_array_chunks, test)]
|
||||
extern crate test;
|
||||
use aoc2022::{boilerplate, common::*};
|
||||
|
||||
const DAY: usize = 2;
|
||||
|
||||
#[rustfmt::skip]
|
||||
fn round(input: [u8; 4]) -> usize {
|
||||
match (input[0], input[2]) {
|
||||
(b'A', b'X') => 4, (b'A', b'Y') => 8, (b'A', b'Z') => 3, (b'B', b'X') => 1, (b'B', b'Y') => 5, (b'B', b'Z') => 9, (b'C', b'X') => 7, (b'C', b'Y') => 2, (b'C', b'Z') => 6,
|
||||
_ => unreachable!(),
|
||||
}
|
||||
}
|
||||
|
||||
#[rustfmt::skip]
|
||||
fn round_p2(input: [u8; 4]) -> usize {
|
||||
match (input[0], input[2]) {
|
||||
(b'A', b'X') => 3, (b'A', b'Y') => 4, (b'A', b'Z') => 8, (b'B', b'X') => 1, (b'B', b'Y') => 5, (b'B', b'Z') => 9, (b'C', b'X') => 2, (b'C', b'Y') => 6, (b'C', b'Z') => 7,
|
||||
_ => unreachable!(),
|
||||
}
|
||||
}
|
||||
|
||||
fn parse_input(raw: &str) -> &str {
|
||||
raw
|
||||
}
|
||||
|
||||
fn part1(parsed: &str) -> usize {
|
||||
parsed.bytes().array_chunks().map(round).sum()
|
||||
}
|
||||
|
||||
fn part2(parsed: &str) -> usize {
|
||||
parsed.bytes().array_chunks().map(round_p2).sum()
|
||||
}
|
||||
|
||||
boilerplate! {
|
||||
TEST_INPUT == "A Y
|
||||
B X
|
||||
C Z
|
||||
",
|
||||
tests: {
|
||||
part1: { TEST_INPUT => 15 },
|
||||
part2: { TEST_INPUT => 12 },
|
||||
},
|
||||
bench1 == 13268,
|
||||
bench2 == 15508,
|
||||
bench_parse: str::len => 10000,
|
||||
}
|
@ -10,7 +10,8 @@ macro_rules! boilerplate {
|
||||
bench_parse: $input_fn: expr => $it: literal$(,)?
|
||||
) => {
|
||||
fn main() {
|
||||
let input = parse_input(&read_file(DAY));
|
||||
let raw_input = read_file(DAY);
|
||||
let input = parse_input(&raw_input);
|
||||
println!("Part 1: {}", part1(&input));
|
||||
println!("Part 2: {}", part2(&input));
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user