day four is done and kinda dull to actually work through

This commit is contained in:
David 2022-12-04 19:15:36 -05:00
parent fc2099c14c
commit c3a6c3d117
1 changed files with 81 additions and 0 deletions

81
04/main.rs Normal file
View File

@ -0,0 +1,81 @@
#![allow(dead_code)]
use std::fs::File;
use std::io;
use std::io::BufRead;
use std::path::Path;
use std::time::Instant;
fn main() {
let now = Instant::now();
part_one();
let part_one_duration = now.elapsed();
part_two();
let part_two_duration = now.elapsed();
println!(
"p1: {}ms, p2: {}ms",
part_one_duration.as_millis(),
(part_two_duration - part_one_duration).as_millis()
);
}
fn read_lines<P>(filename: P) -> io::Result<io::Lines<io::BufReader<File>>>
where
P: AsRef<Path>,
{
// note that this discards a final newline
let file = File::open(filename)?;
Ok(io::BufReader::new(file).lines())
}
fn part_one() {
if let Ok(lines) = read_lines("./inputs/input") {
let mut overlaps = 0;
for line in lines {
if let Ok(ranges) = line {
let v: Vec<Vec<i32>> = ranges
.split(",")
.map(|r| r.split("-").map(|i| i.parse::<i32>().unwrap()).collect())
.collect();
// 00 ... 01
// 10 ... 11
if (v.get(0).unwrap().get(0) <= v.get(1).unwrap().get(0)
&& v.get(0).unwrap().get(1) >= v.get(1).unwrap().get(1))
|| (v.get(1).unwrap().get(0) <= v.get(0).unwrap().get(0)
&& v.get(1).unwrap().get(1) >= v.get(0).unwrap().get(1))
{
overlaps += 1;
}
}
}
println!("{}", overlaps);
}
}
fn part_two() {
if let Ok(lines) = read_lines("./inputs/input") {
let mut overlaps = 0;
for line in lines {
if let Ok(ranges) = line {
let v: Vec<Vec<i32>> = ranges
.split(",")
.map(|r| r.split("-").map(|i| i.parse::<i32>().unwrap()).collect())
.collect();
// 00 ... 01
// 10 ... 11
// uuuuuugh
if (v.get(0).unwrap().get(0) <= v.get(1).unwrap().get(0)
&& v.get(0).unwrap().get(1) >= v.get(1).unwrap().get(1))
|| (v.get(1).unwrap().get(0) <= v.get(0).unwrap().get(0)
&& v.get(1).unwrap().get(1) >= v.get(0).unwrap().get(1))
|| (v.get(0).unwrap().get(0) <= v.get(1).unwrap().get(1)
&& v.get(0).unwrap().get(0) >= v.get(1).unwrap().get(0))
|| (v.get(0).unwrap().get(1) >= v.get(1).unwrap().get(0)
&& v.get(0).unwrap().get(1) <= v.get(1).unwrap().get(1))
{
overlaps += 1;
}
}
}
println!("{}", overlaps);
}
}