diff --git a/src/main.rs b/src/main.rs index cd921fc..3fd2de1 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,5 +1,5 @@ mod tasks; fn main() { - tasks::day03::run(); + tasks::day04::run(); } diff --git a/src/tasks/day04.rs b/src/tasks/day04.rs new file mode 100644 index 0000000..0099807 --- /dev/null +++ b/src/tasks/day04.rs @@ -0,0 +1,17 @@ +use std::ops::RangeInclusive; + +pub fn run() { + let range = 109165..=576723; + task1(&range); +} + +fn task1(range: &RangeInclusive) { + let count = range + .clone() + .map(|v| format!("{}", v)) + .filter(|s| s.chars().zip(s.chars().skip(1)).any(|(a, b)| a == b)) + .filter(|s| s.chars().zip(s.chars().skip(1)).all(|(a, b)| a <= b)) + .count(); + + println!("Task 1: There are {} valid passwords in the range", count); +} diff --git a/src/tasks/mod.rs b/src/tasks/mod.rs index 385f909..c78254c 100644 --- a/src/tasks/mod.rs +++ b/src/tasks/mod.rs @@ -1,2 +1,3 @@ pub mod day01; pub mod day03; +pub mod day04;