33 lines
939 B
Rust
33 lines
939 B
Rust
|
|
pub fn part_1(input: &str) -> u64 {
|
|
let mut priorities_sum: u64 = 0;
|
|
let backpacks = input.lines();
|
|
|
|
for backpack in backpacks {
|
|
// todo this should be .chars() or something
|
|
let items: Vec<&str> = backpack.split("").collect();
|
|
let items_per_compartment = items.len() / 2;
|
|
let first_compartment = &items[1..items_per_compartment];
|
|
let second_compartment= &items[items_per_compartment..(items.len() - 1)];
|
|
|
|
for item in first_compartment {
|
|
if second_compartment.contains(item) {
|
|
let mut byte = item.as_bytes()[0] as u64;
|
|
|
|
// this is kind of diabolical
|
|
if item.to_string() == item.to_uppercase() {
|
|
byte -= 38;
|
|
} else {
|
|
byte -= 96;
|
|
}
|
|
|
|
priorities_sum += byte;
|
|
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
priorities_sum
|
|
}
|