day 2 done
This commit is contained in:
parent
ed6315374e
commit
9b62fa0d92
2 changed files with 83 additions and 0 deletions
82
2022-aoc/src/d2.rs
Normal file
82
2022-aoc/src/d2.rs
Normal file
|
@ -0,0 +1,82 @@
|
||||||
|
use aoc_runner_derive::{aoc as aoc_run, aoc_generator};
|
||||||
|
|
||||||
|
fn score(turn: &str) -> u32 {
|
||||||
|
let mv = turn.split(' ').collect::<Vec<_>>()[1];
|
||||||
|
let mut out = match mv {
|
||||||
|
"X" => 1,
|
||||||
|
"Y" => 2,
|
||||||
|
"Z" => 3,
|
||||||
|
_ => unreachable!(),
|
||||||
|
};
|
||||||
|
|
||||||
|
match turn {
|
||||||
|
"A Y" | "B Z" | "C X" => out += 6,
|
||||||
|
"A X" | "B Y" | "C Z" => out += 3,
|
||||||
|
_ => {}
|
||||||
|
}
|
||||||
|
out
|
||||||
|
}
|
||||||
|
|
||||||
|
fn s2(turn: &str) -> u32 {
|
||||||
|
let wld = turn.split(' ').collect::<Vec<_>>()[1];
|
||||||
|
let mut out = match wld {
|
||||||
|
"X" => 0,
|
||||||
|
"Y" => 3,
|
||||||
|
"Z" => 6,
|
||||||
|
_ => unreachable!(),
|
||||||
|
};
|
||||||
|
|
||||||
|
let mv = turn.split(' ').collect::<Vec<_>>()[0];
|
||||||
|
|
||||||
|
out += match mv {
|
||||||
|
//
|
||||||
|
"A" => match out {
|
||||||
|
0 => 3,
|
||||||
|
3 => 1,
|
||||||
|
6 => 2,
|
||||||
|
_ => 0,
|
||||||
|
},
|
||||||
|
"B" => match out {
|
||||||
|
0 => 1,
|
||||||
|
3 => 2,
|
||||||
|
6 => 3,
|
||||||
|
_ => 0,
|
||||||
|
},
|
||||||
|
"C" => match out {
|
||||||
|
0 => 2,
|
||||||
|
3 => 3,
|
||||||
|
6 => 1,
|
||||||
|
_ => 0,
|
||||||
|
},
|
||||||
|
_ => 0,
|
||||||
|
};
|
||||||
|
out
|
||||||
|
}
|
||||||
|
|
||||||
|
#[aoc_generator(day2, part1)]
|
||||||
|
fn parse_input(input: &str) -> Vec<u32> {
|
||||||
|
let mut out = Vec::new();
|
||||||
|
for line in input.lines() {
|
||||||
|
out.push(score(line));
|
||||||
|
}
|
||||||
|
out
|
||||||
|
}
|
||||||
|
|
||||||
|
#[aoc_generator(day2, part2)]
|
||||||
|
fn parse_input2(input: &str) -> Vec<u32> {
|
||||||
|
let mut out = Vec::new();
|
||||||
|
for line in input.lines() {
|
||||||
|
out.push(s2(line));
|
||||||
|
}
|
||||||
|
out
|
||||||
|
}
|
||||||
|
|
||||||
|
#[aoc_run(day2, part1)]
|
||||||
|
fn part1(scores: &[u32]) -> u32 {
|
||||||
|
scores.iter().sum()
|
||||||
|
}
|
||||||
|
|
||||||
|
#[aoc_run(day2, part2)]
|
||||||
|
fn part2(scores: &[u32]) -> u32 {
|
||||||
|
scores.iter().sum()
|
||||||
|
}
|
|
@ -1,5 +1,6 @@
|
||||||
use aoc_runner_derive::aoc_lib;
|
use aoc_runner_derive::aoc_lib;
|
||||||
|
|
||||||
mod d1;
|
mod d1;
|
||||||
|
mod d2;
|
||||||
|
|
||||||
aoc_lib! { year = 2022 }
|
aoc_lib! { year = 2022 }
|
||||||
|
|
Loading…
Reference in a new issue