From 32843531f874385459684afe60e7f0e246841245 Mon Sep 17 00:00:00 2001 From: Johannes Schaefer Date: Wed, 5 Dec 2018 15:15:18 +0100 Subject: [PATCH] take times --- Cargo.lock | 16 ++++++++++++++++ Cargo.toml | 1 + src/lib.rs | 1 + src/main.rs | 2 +- src/tasks/day05.rs | 15 +++++++-------- 5 files changed, 26 insertions(+), 9 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9a6c39d..2056020 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -11,6 +11,7 @@ name = "aoc_2018" version = "0.1.0" dependencies = [ "chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "itertools 0.7.11 (registry+https://github.com/rust-lang/crates.io-index)", "regex 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -29,6 +30,19 @@ dependencies = [ "time 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "either" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "itertools" +version = "0.7.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "either 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "lazy_static" version = "1.2.0" @@ -143,6 +157,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" "checksum aho-corasick 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)" = "1e9a933f4e58658d7b12defcf96dc5c720f20832deebe3e0a19efd3b6aaeeb9e" "checksum cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "082bb9b28e00d3c9d39cc03e64ce4cea0f1bb9b3fde493f0cbc008472d22bdf4" "checksum chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "45912881121cb26fad7c38c17ba7daa18764771836b34fab7d3fbd93ed633878" +"checksum either 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3be565ca5c557d7f59e7cfcf1844f9e3033650c929c6566f511e8005f205c1d0" +"checksum itertools 0.7.11 (registry+https://github.com/rust-lang/crates.io-index)" = "0d47946d458e94a1b7bcabbf6521ea7c037062c81f534615abcad76e84d4970d" "checksum lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a374c89b9db55895453a74c1e38861d9deec0b01b405a82516e9d5de4820dea1" "checksum libc 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)" = "10923947f84a519a45c8fefb7dd1b3e8c08747993381adee176d7a82b4195311" "checksum memchr 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0a3eb002f0535929f1199681417029ebea04aadc0c7a4224b46be99c7f5d6a16" diff --git a/Cargo.toml b/Cargo.toml index 7ca11dd..bc74f37 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -6,3 +6,4 @@ authors = ["Johannes "] [dependencies] regex = "1.1.0" chrono = "0.4.6" +itertools = "0.7.11" diff --git a/src/lib.rs b/src/lib.rs index 6f83d27..874ae7d 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,4 +1,5 @@ extern crate chrono; +extern crate itertools; extern crate regex; pub mod tasks; diff --git a/src/main.rs b/src/main.rs index 58844d7..cf60aed 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,4 +1,4 @@ fn main() { - // aoc_2018::tasks::day05::task1(); + aoc_2018::tasks::day05::task1(); aoc_2018::tasks::day05::task2(); } diff --git a/src/tasks/day05.rs b/src/tasks/day05.rs index b7cd878..0e80d04 100644 --- a/src/tasks/day05.rs +++ b/src/tasks/day05.rs @@ -1,15 +1,19 @@ +use std::time::Instant; use utils; pub fn task1() { let mut input = utils::read_file("input/day05.txt"); + let start = Instant::now(); input = reduce(input.as_str()); - println!("resulting polymer: {}", input); + println!("Duration: {:?}", Instant::now() - start); println!("RESULT: {}", input.len()); } pub fn task2() { let input = utils::read_file("input/day05.txt"); + let start = Instant::now(); + let input = reduce(&input); let best = "abcdefghijklmnopqrstuvwxyz" .chars() .map(|c| { @@ -25,6 +29,7 @@ pub fn task2() { }).min_by_key(|it| it.1) .unwrap(); + println!("Duration: {:?}", Instant::now() - start); println!("Best: {} (length {})", best.0, best.1); } @@ -42,13 +47,7 @@ fn reduce(input: &str) -> String { } if let Some(last) = last { - if c.is_lowercase() - && last.is_uppercase() - && c == last.to_lowercase().next().unwrap() - || last.is_lowercase() - && c.is_uppercase() - && last == c.to_lowercase().next().unwrap() - { + if c.eq_ignore_ascii_case(&last) && c != last { stack.pop(); } else { stack.push(c);