From d835e286f7488490c044e805bb9bf77db612639f Mon Sep 17 00:00:00 2001 From: Tabby <41929769+tabby-cat-nya@users.noreply.github.com> Date: Tue, 2 Dec 2025 05:43:15 +0000 Subject: [PATCH] have started on day 2, might need some help with ranges? --- aoc-2/Cargo.lock | 54 +++++++++++++++++++++++++++++++++++++++++++ aoc-2/Cargo.toml | 7 ++++++ aoc-2/src/example.txt | 1 + aoc-2/src/input.txt | 1 + aoc-2/src/main.rs | 35 ++++++++++++++++++++++++++++ 5 files changed, 98 insertions(+) create mode 100644 aoc-2/Cargo.lock create mode 100644 aoc-2/Cargo.toml create mode 100644 aoc-2/src/example.txt create mode 100644 aoc-2/src/input.txt create mode 100644 aoc-2/src/main.rs diff --git a/aoc-2/Cargo.lock b/aoc-2/Cargo.lock new file mode 100644 index 0000000..76058ac --- /dev/null +++ b/aoc-2/Cargo.lock @@ -0,0 +1,54 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "aho-corasick" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" +dependencies = [ + "memchr", +] + +[[package]] +name = "aoc-2" +version = "0.1.0" +dependencies = [ + "regex", +] + +[[package]] +name = "memchr" +version = "2.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" + +[[package]] +name = "regex" +version = "1.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58" diff --git a/aoc-2/Cargo.toml b/aoc-2/Cargo.toml new file mode 100644 index 0000000..c3865e4 --- /dev/null +++ b/aoc-2/Cargo.toml @@ -0,0 +1,7 @@ +[package] +name = "aoc-2" +version = "0.1.0" +edition = "2024" + +[dependencies] +regex = "1.12.2" diff --git a/aoc-2/src/example.txt b/aoc-2/src/example.txt new file mode 100644 index 0000000..bd04584 --- /dev/null +++ b/aoc-2/src/example.txt @@ -0,0 +1 @@ +11-22,95-115,998-1012,1188511880-1188511890,222220-222224,1698522-1698528,446443-446449,38593856-38593862,565653-565659,824824821-824824827,2121212118-2121212124 \ No newline at end of file diff --git a/aoc-2/src/input.txt b/aoc-2/src/input.txt new file mode 100644 index 0000000..bfcd4e3 --- /dev/null +++ b/aoc-2/src/input.txt @@ -0,0 +1 @@ +5959566378-5959623425,946263-1041590,7777713106-7777870316,35289387-35394603,400-605,9398763-9592164,74280544-74442206,85684682-85865536,90493-179243,202820-342465,872920-935940,76905692-76973065,822774704-822842541,642605-677786,3759067960-3759239836,1284-3164,755464-833196,52-128,3-14,30481-55388,844722790-844967944,83826709-83860070,9595933151-9595993435,4216-9667,529939-579900,1077949-1151438,394508-486310,794-1154,10159-17642,5471119-5683923,16-36,17797-29079,187-382 \ No newline at end of file diff --git a/aoc-2/src/main.rs b/aoc-2/src/main.rs new file mode 100644 index 0000000..dd0b60f --- /dev/null +++ b/aoc-2/src/main.rs @@ -0,0 +1,35 @@ +// within certain rnages, find numbers with a pattern repeated exactly twice +// eg "55" ("5" twice), "6464" ("64" twice), "123123" +// cannot be matches on numebrs with an odd number of digits +// compare the first half of the didgits to the second half +// save all the matches (invalid id's) to a list and add them up to produce the solution +// each rnage can have 0 or more invalid id's +// need to parse each range (probably regex), get start and end value for each + +use std::fs; +use regex::Regex; + +fn main() { + println!("Lets begin, day 2, part 1"); + let file_path = "src/input.txt"; + // let file_path = "src/example.txt"; + + // split up input by "," and "-" + // (?\d*)-(?\d*) + let re = Regex::new(r"(?\d*)-(?\d*)").unwrap(); + let line = fs::read_to_string(file_path).unwrap(); + println!("{line}"); + + // let mut results = vec![]; + + // parse the provided ranges into paits + let ranges: Vec<(i32, i32)> = re.captures_iter(&line).map(|caps| { + let start: i32 = caps.name("start_range").unwrap().as_str().parse::().unwrap(); + let end: i32 = caps.name("end_range").unwrap().as_str().parse::().unwrap(); + (start, end) + }).collect(); + + println!("{ranges:?}"); + + +}