solution: day2
This commit is contained in:
parent
0000001084
commit
0000002038
|
@ -0,0 +1,55 @@
|
||||||
|
pub fn part_one(input: &str) -> Option<u32> {
|
||||||
|
let present_dimensions: Vec<Vec<u32>> = input
|
||||||
|
.trim()
|
||||||
|
.split('\n')
|
||||||
|
.map(|x| x.split('x').map(|y| y.parse::<u32>().unwrap()).collect())
|
||||||
|
.collect();
|
||||||
|
|
||||||
|
let mut wrapping = 0;
|
||||||
|
for present in present_dimensions.iter() {
|
||||||
|
if let [x, y, z] = &present[..] {
|
||||||
|
wrapping +=
|
||||||
|
2 * (x * y + y * z + z * x) + vec![x * y, y * z, z * x].iter().min().unwrap();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Some(wrapping)
|
||||||
|
}
|
||||||
|
pub fn part_two(input: &str) -> Option<u32> {
|
||||||
|
let present_dimensions: Vec<Vec<u32>> = input
|
||||||
|
.trim()
|
||||||
|
.split('\n')
|
||||||
|
.map(|x| x.split('x').map(|y| y.parse::<u32>().unwrap()).collect())
|
||||||
|
.collect();
|
||||||
|
|
||||||
|
let mut wrapping = 0;
|
||||||
|
for present in present_dimensions.iter() {
|
||||||
|
if let [x, y, z] = &present[..] {
|
||||||
|
// ribbon
|
||||||
|
wrapping += x * y * z;
|
||||||
|
// ribbon base
|
||||||
|
wrapping += 2 * (x + y + z - present.iter().max().unwrap());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Some(wrapping)
|
||||||
|
}
|
||||||
|
fn main() {
|
||||||
|
let input = &aoc::read_file("inputs", 2);
|
||||||
|
aoc::solve!(1, part_one, input);
|
||||||
|
aoc::solve!(2, part_two, input);
|
||||||
|
}
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
#[test]
|
||||||
|
fn test_part_one() {
|
||||||
|
// let input = aoc::read_file("test_inputs", 2);
|
||||||
|
let input = "2x3x4";
|
||||||
|
assert_eq!(part_one(&input), Some(58));
|
||||||
|
}
|
||||||
|
#[test]
|
||||||
|
fn test_part_two() {
|
||||||
|
// let input = aoc::read_file("test_inputs", 2);
|
||||||
|
let input = "2x3x4";
|
||||||
|
assert_eq!(part_two(&input), Some(34));
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue