complete day 3
This commit is contained in:
33
src/day_3.rs
Normal file
33
src/day_3.rs
Normal file
@@ -0,0 +1,33 @@
|
||||
|
||||
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() {
|
||||
// reduce by some lesser amount?
|
||||
byte -= 38;
|
||||
} else {
|
||||
byte -= 96;
|
||||
}
|
||||
|
||||
priorities_sum += byte;
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
priorities_sum
|
||||
}
|
||||
@@ -1,9 +1,11 @@
|
||||
mod day_1;
|
||||
mod day_2;
|
||||
mod day_3;
|
||||
|
||||
fn main() {
|
||||
println!("Day 1, part 1: {}", day_1::part_1(include_str!("../input/day_1.txt")));
|
||||
println!("Day 1, part 2: {}", day_1::part_2(include_str!("../input/day_1.txt")));
|
||||
println!("Day 2, part 1: {}", day_2::part_1(include_str!("../input/day_2.txt")));
|
||||
println!("Day 2, part 2: {}", day_2::part_2(include_str!("../input/day_2.txt")));
|
||||
println!("Day 3, part 1: {}", day_3::part_1(include_str!("../input/day_3.txt")));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user