1
0
Fork 0
AdvenOfCode2022/src/prob3/mod.rs

29 lines
859 B
Rust

use std::collections::HashSet;
fn character_to_code(input: i32) -> i32 {
if input >= ('a' as i32) {
input - 96
} else {
input - 38
}
}
pub fn solve_part1(file_path: &str) -> i32 {
let binding =
std::fs::read_to_string(file_path).expect("Please provide a text file as an argument.");
binding
.lines()
.collect::<Vec<&str>>()
.iter()
.map(|item: &&str| {
let (first, last) = item.split_at(item.len() / 2);
let second = last.chars().collect::<HashSet<char>>();
let intersection = first.chars().collect::<HashSet<char>>();
let character = *intersection.intersection(&second).next().unwrap_or(&(0 as char)) as i32;
character_to_code(character)
})
.collect::<Vec<i32>>()
.iter()
.sum::<i32>()
}