Add 2022 day 4
This commit is contained in:
parent
793848ed96
commit
59a074db50
|
@ -0,0 +1,14 @@
|
||||||
|
# This file is automatically @generated by Cargo.
|
||||||
|
# It is not intended for manual editing.
|
||||||
|
version = 3
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "common"
|
||||||
|
version = "0.1.0"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "day4"
|
||||||
|
version = "0.1.0"
|
||||||
|
dependencies = [
|
||||||
|
"common",
|
||||||
|
]
|
|
@ -0,0 +1,9 @@
|
||||||
|
[package]
|
||||||
|
name = "day4"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2021"
|
||||||
|
|
||||||
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
common = { path = "../common" }
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,33 @@
|
||||||
|
use std::str::FromStr;
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
let input_file = common::parse_args_input_file(&mut std::env::args());
|
||||||
|
let contents = std::fs::read_to_string(input_file).expect("Couldn't read contents of input file");
|
||||||
|
let mut contained = 0;
|
||||||
|
let mut overlapped = 0;
|
||||||
|
for line in contents.lines() {
|
||||||
|
if line.eq("") {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
let split_line = line.split_once(",").expect("Line didn't contain a pair delimiter");
|
||||||
|
let left = split_line.0.split_once("-").expect("Left side didn't contain a range delimiter");
|
||||||
|
let right = split_line.1.split_once("-").expect("Right side didn't contain a range delimiter");
|
||||||
|
|
||||||
|
let lmin = u32::from_str(left.0).unwrap();
|
||||||
|
let lmax = u32::from_str(left.1).unwrap();
|
||||||
|
let rmin = u32::from_str(right.0).unwrap();
|
||||||
|
let rmax = u32::from_str(right.1).unwrap();
|
||||||
|
|
||||||
|
if (lmin >= rmin && lmax <= rmax) || (rmin >= lmin && rmax <= lmax) {
|
||||||
|
contained += 1;
|
||||||
|
println!("{}-{},{}-{}", lmin, lmax, rmin, rmax);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (lmin > rmax) || (lmax < rmin) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
overlapped += 1;
|
||||||
|
}
|
||||||
|
println!("[PART 1] Pairs fully containing another: {}", contained);
|
||||||
|
println!("[PART 2] Pairs with any overlap: {}", overlapped);
|
||||||
|
}
|
Loading…
Reference in New Issue