Compare commits
No commits in common. "84842992d0daf02b2bcec1175dea9cd71b090fe2" and "14b02942821c5d2ee2946d5e08a9e1f6adb7a676" have entirely different histories.
84842992d0
...
14b0294282
1000
2022/day4.txt
1000
2022/day4.txt
File diff suppressed because it is too large
Load Diff
|
@ -1,6 +1,6 @@
|
||||||
use anyhow::Result;
|
use anyhow::Result;
|
||||||
use std::collections::HashSet;
|
|
||||||
use std::fs;
|
use std::fs;
|
||||||
|
use std::collections::HashSet;
|
||||||
|
|
||||||
fn get_priority(t: &char) -> u32 {
|
fn get_priority(t: &char) -> u32 {
|
||||||
if t.is_ascii_uppercase() {
|
if t.is_ascii_uppercase() {
|
||||||
|
@ -47,20 +47,14 @@ pub fn run() -> Result<()> {
|
||||||
let elf2map: HashSet<char> = HashSet::from_iter(elf2.chars());
|
let elf2map: HashSet<char> = HashSet::from_iter(elf2.chars());
|
||||||
let elf3map: HashSet<char> = HashSet::from_iter(elf3.chars());
|
let elf3map: HashSet<char> = HashSet::from_iter(elf3.chars());
|
||||||
|
|
||||||
for dupe in elf1map
|
for dupe in elf1map.iter().filter(|t| elf2map.contains(t) && elf3map.contains(t)) {
|
||||||
.iter()
|
|
||||||
.filter(|t| elf2map.contains(t) && elf3map.contains(t))
|
|
||||||
{
|
|
||||||
rucksacks2.push(get_priority(dupe));
|
rucksacks2.push(get_priority(dupe));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
println!(
|
println!("part two priorities {}", rucksacks2.into_iter().sum::<u32>());
|
||||||
"part two priorities {}",
|
|
||||||
rucksacks2.into_iter().sum::<u32>()
|
|
||||||
);
|
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,39 +0,0 @@
|
||||||
use anyhow::Result;
|
|
||||||
use std::fs;
|
|
||||||
|
|
||||||
pub fn run() -> Result<()> {
|
|
||||||
let file_contents = fs::read_to_string("day4.txt")?;
|
|
||||||
let lines = file_contents.lines();
|
|
||||||
let mut part_one_pairs = 0;
|
|
||||||
let mut part_two_pairs = 0;
|
|
||||||
|
|
||||||
for line in lines {
|
|
||||||
let v: Vec<&str> = line.split(",").collect();
|
|
||||||
let left: Vec<u32> = v[0].split("-").map(|t| t.parse::<u32>().unwrap()).collect();
|
|
||||||
let right: Vec<u32> = v[1].split("-").map(|t| t.parse::<u32>().unwrap()).collect();
|
|
||||||
|
|
||||||
let left_outside = left[0] <= right[0] && left[1] >= right[1];
|
|
||||||
let left_inside = left[0] >= right[0] && left[1] <= right[1];
|
|
||||||
let left_covered = left_outside || left_inside;
|
|
||||||
|
|
||||||
let right_outside = right[0] <= left[0] && right[1] >= left[1];
|
|
||||||
let right_inside = right[0] >= left[0] && right[1] <= left[1];
|
|
||||||
let right_covered = right_outside || right_inside;
|
|
||||||
|
|
||||||
if left_covered && right_covered {
|
|
||||||
part_one_pairs += 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
let left_1_inside = left[0] >= right[0] && left[0] <= right[1];
|
|
||||||
let left_2_inside = left[1] >= right[0] && left[1] <= right[1];
|
|
||||||
let right_1_inside = right[0] >= left[0] && right[0] <= left[1];
|
|
||||||
let right_2_inside = right[1] >= left[0] && right[1] <= left[1];
|
|
||||||
if left_1_inside || left_2_inside || right_1_inside || right_2_inside {
|
|
||||||
part_two_pairs += 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
println!("part one pairs {}", part_one_pairs);
|
|
||||||
println!("part two pairs {}", part_two_pairs);
|
|
||||||
|
|
||||||
Ok(())
|
|
||||||
}
|
|
|
@ -1,4 +1,3 @@
|
||||||
pub mod day1;
|
pub mod day1;
|
||||||
pub mod day2;
|
pub mod day2;
|
||||||
pub mod day3;
|
pub mod day3;
|
||||||
pub mod day4;
|
|
||||||
|
|
|
@ -14,13 +14,10 @@ fn run_day(number: i32) -> Result<()> {
|
||||||
}
|
}
|
||||||
2 => {
|
2 => {
|
||||||
days::day2::run()?;
|
days::day2::run()?;
|
||||||
}
|
},
|
||||||
3 => {
|
3 => {
|
||||||
days::day3::run()?;
|
days::day3::run()?;
|
||||||
}
|
},
|
||||||
4 => {
|
|
||||||
days::day4::run()?;
|
|
||||||
}
|
|
||||||
_ => return Err(anyhow!("Invalid day provided")),
|
_ => return Err(anyhow!("Invalid day provided")),
|
||||||
}
|
}
|
||||||
Ok(())
|
Ok(())
|
||||||
|
|
|
@ -1,6 +0,0 @@
|
||||||
2-4,6-8
|
|
||||||
2-3,4-5
|
|
||||||
5-7,7-9
|
|
||||||
2-8,3-7
|
|
||||||
6-6,4-6
|
|
||||||
2-6,4-8
|
|
Loading…
Reference in New Issue