From 4d3be56120a7e4c654cb8b83aa255afd5a170c56 Mon Sep 17 00:00:00 2001 From: Russell Champoux Date: Thu, 19 Dec 2024 18:21:55 +0000 Subject: [PATCH] day 9 pt1 --- Cargo.lock | 113 ++++++++++++++++++++++++++++++++++++++++++++++---- Cargo.toml | 2 + src/bin/09.rs | 14 +++---- 3 files changed, 111 insertions(+), 18 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 480d6e8..f26c4ea 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -23,7 +23,9 @@ version = "0.11.0" dependencies = [ "chrono", "dhat", + "fn-cache", "itertools", + "num", "pico-args", "regex", "tap", @@ -122,6 +124,26 @@ version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" +[[package]] +name = "derive_more" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a9b99b9cbbe49445b21764dc0625032a89b145a2642e67603e1c936f5458d05" +dependencies = [ + "derive_more-impl", +] + +[[package]] +name = "derive_more-impl" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "dhat" version = "0.3.3" @@ -144,6 +166,15 @@ version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" +[[package]] +name = "fn-cache" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2384325bacc12de35889192f061efaf85331ff9513ee30f65b3d1adf3ff6fc13" +dependencies = [ + "derive_more", +] + [[package]] name = "gimli" version = "0.28.1" @@ -251,10 +282,74 @@ dependencies = [ ] [[package]] -name = "num-traits" -version = "0.2.17" +name = "num" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c" +checksum = "35bd024e8b2ff75562e5f34e7f4905839deb4b22955ef5e73d2fea1b9813cb23" +dependencies = [ + "num-bigint", + "num-complex", + "num-integer", + "num-iter", + "num-rational", + "num-traits", +] + +[[package]] +name = "num-bigint" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" +dependencies = [ + "num-integer", + "num-traits", +] + +[[package]] +name = "num-complex" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-integer" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-iter" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-rational" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824" +dependencies = [ + "num-bigint", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [ "autocfg", ] @@ -305,18 +400,18 @@ checksum = "5be167a7af36ee22fe3115051bc51f6e6c7054c9348e28deb4f49bd6f705a315" [[package]] name = "proc-macro2" -version = "1.0.70" +version = "1.0.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39278fbbf5fb4f646ce651690877f89d1c5811a3d4acb27700c1cb3cdb78fd3b" +checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0" dependencies = [ "unicode-ident", ] [[package]] name = "quote" -version = "1.0.33" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" +checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" dependencies = [ "proc-macro2", ] @@ -422,9 +517,9 @@ checksum = "4dccd0940a2dcdf68d092b8cbab7dc0ad8fa938bf95787e1b916b0e3d0e8e970" [[package]] name = "syn" -version = "2.0.39" +version = "2.0.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23e78b90f2fcf45d3e842032ce32e3f2d1545ba6636271dcbf24fa306d87be7a" +checksum = "919d3b74a5dd0ccd15aeb8f93e7006bd9e14c295087c9896a110f490752bcf31" dependencies = [ "proc-macro2", "quote", diff --git a/Cargo.toml b/Cargo.toml index 21c042e..6521c58 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -24,7 +24,9 @@ test_lib = [] # Template dependencies chrono = { version = "0.4.38", optional = true } dhat = { version = "0.3.3", optional = true } +fn-cache = "2.0.0" itertools = "0.13.0" +num = "0.4.3" pico-args = "0.5.0" regex = "1.11.1" tap = "1.0.1" diff --git a/src/bin/09.rs b/src/bin/09.rs index 99353d9..b5740ce 100644 --- a/src/bin/09.rs +++ b/src/bin/09.rs @@ -4,7 +4,7 @@ use itertools::Itertools; advent_of_code::solution!(9); -pub fn part_one(input: &str) -> Option { +pub fn part_one(input: &str) -> Option { // println!("INPUT:"); // println!("{}", input); @@ -20,7 +20,7 @@ pub fn part_one(input: &str) -> Option { let checksum = get_checksum(compressed_blocks); - Some(checksum as u32) + Some(checksum as u64) } pub fn part_two(_input: &str) -> Option { @@ -83,13 +83,9 @@ mod tests { let input = "2333133121414131402\n"; let blocks = create_blocks(input.chars().collect_vec()); - let result_str = blocks.iter().fold("".to_string(), |cur, next| { - if *next == None { - cur + "." - } else { - cur + &next.unwrap().to_string() - } - }); + let result_str: String = blocks.iter().map(|b| { + if Option::is_some(b) { b.unwrap().to_string() } else { ".".to_string() } + }).collect(); assert_eq!(result_str, "00...111...2...333.44.5555.6666.777.888899"); }