1
0

day1 part 2

This commit is contained in:
2024-12-01 07:49:50 +01:00
parent ae4f2aa23d
commit 2b67433f49

View File

@@ -3,23 +3,14 @@ use std::fs::read_to_string;
fn main() {
let input = read_to_string("input/day01.txt").unwrap();
let part1 = part1(&input);
println!("part1: {}", part1);
println!("part1: {}", part1(&input));
println!("part2: {}", part2(&input));
}
type Int = i32;
fn part1(input: &str) -> Int {
let (mut l, mut r) = input
.trim()
.lines()
.map(|line| line.split_ascii_whitespace().collect_tuple().unwrap())
.map(|(x, y)| (x.parse::<Int>().unwrap(), y.parse::<Int>().unwrap()))
.fold((vec![], vec![]), |(mut v1, mut v2), (a, b)| {
v1.push(a);
v2.push(b);
(v1, v2)
});
let (mut l, mut r) = make_lists(input);
l.sort();
r.sort();
@@ -30,8 +21,32 @@ fn part1(input: &str) -> Int {
.sum()
}
fn part2(input: &str) -> Int {
let (l, r) = make_lists(input);
l.iter()
.map(|l| r.iter().filter(|r| *r == l).count() as Int * l)
.sum()
}
fn make_lists(input: &str) -> (Vec<Int>, Vec<Int>) {
input
.trim()
.lines()
.map(|line| line.split_ascii_whitespace().collect_tuple().unwrap())
.map(|(x, y)| (x.parse::<Int>().unwrap(), y.parse::<Int>().unwrap()))
.fold((vec![], vec![]), |(mut v1, mut v2), (a, b)| {
v1.push(a);
v2.push(b);
(v1, v2)
})
}
#[cfg(test)]
const TEST_INPUT: &str = r"
mod test {
use crate::{part1, part2};
const TEST_INPUT: &str = r"
3 4
4 3
2 5
@@ -40,7 +55,12 @@ const TEST_INPUT: &str = r"
3 3
";
#[test]
fn test() {
assert_eq!(part1(TEST_INPUT), 11);
#[test]
fn test1() {
assert_eq!(part1(TEST_INPUT), 11);
}
#[test]
fn test2() {
assert_eq!(part2(TEST_INPUT), 31);
}
}