2022 rust day 4
This commit is contained in:
parent
fb31ef50f4
commit
87bee4974d
35
2022/rust/Cargo.lock
generated
35
2022/rust/Cargo.lock
generated
|
@ -2,6 +2,41 @@
|
||||||
# It is not intended for manual editing.
|
# It is not intended for manual editing.
|
||||||
version = 3
|
version = 3
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "aho-corasick"
|
||||||
|
version = "0.7.20"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "cc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071ac"
|
||||||
|
dependencies = [
|
||||||
|
"memchr",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "memchr"
|
||||||
|
version = "2.5.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "regex"
|
||||||
|
version = "1.7.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "e076559ef8e241f2ae3479e36f97bd5741c0330689e217ad51ce2c76808b868a"
|
||||||
|
dependencies = [
|
||||||
|
"aho-corasick",
|
||||||
|
"memchr",
|
||||||
|
"regex-syntax",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "regex-syntax"
|
||||||
|
version = "0.6.28"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "456c603be3e8d448b072f410900c09faf164fbce2d480456f50eea6e25f9c848"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "rust"
|
name = "rust"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
|
dependencies = [
|
||||||
|
"regex",
|
||||||
|
]
|
||||||
|
|
|
@ -6,3 +6,4 @@ edition = "2021"
|
||||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
|
regex = "1.7.0"
|
||||||
|
|
1000
2022/rust/inputs/day04.txt
Normal file
1000
2022/rust/inputs/day04.txt
Normal file
File diff suppressed because it is too large
Load diff
|
@ -1,6 +1,6 @@
|
||||||
vJrwpWtwJgWrhcsFMMfFFhFp
|
2-4,6-8
|
||||||
jqHRNqRjqzjGDLGLrsFMfFZSrLrFZsSL
|
2-3,4-5
|
||||||
PmmdzqPrVvPwwTWBwg
|
5-7,7-9
|
||||||
wMqvLMZHhHMvwLHjbvcjnnSBnvTQFn
|
2-8,3-7
|
||||||
ttgJtRGJQctTZtZT
|
6-6,4-6
|
||||||
CrZsJsPPZsGzwwsLwLmpwMDw
|
2-6,4-8
|
||||||
|
|
|
@ -3,5 +3,5 @@ mod solutions;
|
||||||
|
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
solutions::day03::run();
|
solutions::day04::run();
|
||||||
}
|
}
|
||||||
|
|
51
2022/rust/src/solutions/day04.rs
Normal file
51
2022/rust/src/solutions/day04.rs
Normal file
|
@ -0,0 +1,51 @@
|
||||||
|
#![allow(dead_code)]
|
||||||
|
use regex::Regex;
|
||||||
|
use crate::utils;
|
||||||
|
|
||||||
|
|
||||||
|
pub fn run() -> () {
|
||||||
|
let data = parse_data(utils::read_lines(utils::Source::Day(4)));
|
||||||
|
|
||||||
|
println!("Day 4");
|
||||||
|
println!("Part 1: {}", solve1(&data));
|
||||||
|
println!("Part 2: {}", solve2(&data));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
fn solve1(data: &Vec<((i32, i32), (i32, i32))>) -> i32 {
|
||||||
|
data.iter()
|
||||||
|
.copied()
|
||||||
|
.map(|((s1, e1), (s2, e2))|
|
||||||
|
if s1 <= s2 && e2 <= e1 || s2 <= s1 && e1 <= e2 { 1 } else { 0 }
|
||||||
|
)
|
||||||
|
.sum()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn solve2(data: &Vec<((i32, i32), (i32, i32))>) -> i32 {
|
||||||
|
data.iter()
|
||||||
|
.copied()
|
||||||
|
.map(|((s1, e1), (s2, e2))|
|
||||||
|
if s1 <= e2 && s2 <= e1 { 1 } else { 0 }
|
||||||
|
)
|
||||||
|
.sum()
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
fn parse_data(data: Vec<String>) -> Vec<((i32, i32), (i32, i32))> {
|
||||||
|
let re = Regex::new(r"^(\d+)-(\d+),(\d+)-(\d+)$").unwrap();
|
||||||
|
data.iter()
|
||||||
|
.map(|s| {
|
||||||
|
let c = re.captures(s).unwrap();
|
||||||
|
(
|
||||||
|
(
|
||||||
|
c.get(1).unwrap().as_str().parse().unwrap(),
|
||||||
|
c.get(2).unwrap().as_str().parse().unwrap(),
|
||||||
|
),
|
||||||
|
(
|
||||||
|
c.get(3).unwrap().as_str().parse().unwrap(),
|
||||||
|
c.get(4).unwrap().as_str().parse().unwrap(),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
})
|
||||||
|
.collect()
|
||||||
|
}
|
|
@ -1,3 +1,4 @@
|
||||||
pub mod day01;
|
pub mod day01;
|
||||||
pub mod day02;
|
pub mod day02;
|
||||||
pub mod day03;
|
pub mod day03;
|
||||||
|
pub mod day04;
|
||||||
|
|
Loading…
Reference in a new issue