From 0a6971991e3b235166f4d230c45678d3a855c0e1 Mon Sep 17 00:00:00 2001 From: Bearmine Date: Fri, 30 May 2025 08:07:15 -0500 Subject: [PATCH] Cleanup code and store invalid pages for part 2 --- day_05/src/main.rs | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/day_05/src/main.rs b/day_05/src/main.rs index deabf18..5ead321 100644 --- a/day_05/src/main.rs +++ b/day_05/src/main.rs @@ -15,13 +15,14 @@ fn main() -> Result<(), Box> { &args[0] ) } - let input_file_string = &args[1]; + let input_file = &args[1]; - let buffer = BufReader::new(File::open(input_file_string)?); + let buffer = BufReader::new(File::open(input_file)?); let mut rules_stage = true; let mut page_rules: HashMap> = HashMap::new(); let mut valid_page_updates: Vec> = Vec::new(); + let mut invalid_page_updates: Vec> = Vec::new(); for line in buffer.lines() { let line = line?; if rules_stage { @@ -30,7 +31,7 @@ fn main() -> Result<(), Box> { if line.is_empty() { // Blank line means end of rules rules_stage = false; - println!("Page Rules: {:?}", page_rules); + // println!("Page Rules: {:?}", page_rules); continue; } let split_line: Vec<&str> = line.split("|").collect(); @@ -42,8 +43,8 @@ fn main() -> Result<(), Box> { let key = split_line[0].parse::()?; let value = split_line[1].parse::()?; match page_rules.get_mut(&key) { - Some(rule) => { - rule.insert(value); + Some(rule_set) => { + rule_set.insert(value); } None => { let mut new_rule_set = HashSet::new(); @@ -53,14 +54,14 @@ fn main() -> Result<(), Box> { } } else { // Stage 2: check updates - let update_page_nums: Vec = line + let page_update: Vec = line .split(",") .map(|v| v.parse::<_>()) .collect::>()?; let mut prev_pages: HashSet = HashSet::new(); let mut is_valid = true; - for page_num in update_page_nums.iter() { + for page_num in page_update.iter() { if let Some(rule_set) = page_rules.get(page_num) { if !prev_pages.is_disjoint(rule_set) { is_valid = false; @@ -70,7 +71,9 @@ fn main() -> Result<(), Box> { } } if is_valid { - valid_page_updates.push(update_page_nums); + valid_page_updates.push(page_update); + } else { + invalid_page_updates.push(page_update); } } }