diff --git a/Cargo.lock b/Cargo.lock index de51018..d37200f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5,21 +5,3 @@ version = 3 [[package]] name = "aoc2022" version = "0.1.0" -dependencies = [ - "itertools", -] - -[[package]] -name = "either" -version = "1.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90e5c1c8368803113bf0c9584fc495a58b86dc8a29edbf8fe877d21d9507e797" - -[[package]] -name = "itertools" -version = "0.10.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" -dependencies = [ - "either", -] diff --git a/Cargo.toml b/Cargo.toml index 8debe7f..c1cd145 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -6,4 +6,3 @@ edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -itertools = "0.10.5" diff --git a/rust-toolchain.toml b/rust-toolchain.toml new file mode 100644 index 0000000..5d56faf --- /dev/null +++ b/rust-toolchain.toml @@ -0,0 +1,2 @@ +[toolchain] +channel = "nightly" diff --git a/src/day03.rs b/src/day03.rs index c19eb75..a46e5a7 100644 --- a/src/day03.rs +++ b/src/day03.rs @@ -1,5 +1,3 @@ -use itertools::Itertools; - pub fn process_part_1(input: &str) -> u32 { input .lines() @@ -23,16 +21,11 @@ pub fn process_part_1(input: &str) -> u32 { pub fn process_part_2(input: &str) -> u32 { let result = input .lines() - .chunks(3) - .into_iter() - .map(|chunk| { - let lines: Vec<_> = chunk - .map(|l| l.chars().unique().collect::>()) - .collect(); - - let overlap = *lines[0] - .iter() - .find(|c| lines[1].contains(*c) && lines[2].contains(*c)) + .array_chunks::<3>() + .map(|[a, b, c]| { + let overlap = a + .chars() + .find(|chr| b.contains(*chr) && c.contains(*chr)) .unwrap(); match overlap { diff --git a/src/lib.rs b/src/lib.rs index 2ec5ec5..170d1cf 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,3 +1,4 @@ +#![feature(iter_array_chunks)] extern crate core; pub mod day01;