diff --git a/src/main.rs b/src/main.rs index bb933c7..4f6627c 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,5 +1,5 @@ mod tasks; fn main() { - tasks::day24::run(); + tasks::day18::run(); } diff --git a/src/tasks/day18.rs b/src/tasks/day18.rs index 016c0b0..e4d2bf7 100644 --- a/src/tasks/day18.rs +++ b/src/tasks/day18.rs @@ -15,8 +15,8 @@ pub fn run() { let t1 = task(input.clone()); println!("Task 1: best bound to get all keys is {}", t1); - let t2 = task(input.clone().split_robot()); - println!("Task 2: best bound to get all keys is {}", t2); + //let t2 = task(input.clone().split_robot()); + //println!("Task 2: best bound to get all keys is {}", t2); } fn task(map: Map) -> usize { @@ -32,20 +32,17 @@ fn task(map: Map) -> usize { let mut visited: HashSet = HashSet::new(); let mut open: BinaryHeap = BinaryHeap::new(); - let mut best_found_for_all = std::usize::MAX; open.push(State::new(map.clone())); while let Some(state) = open.pop() { let summary = StateSummary::from(&state); - if visited.contains(&summary) || best_found_for_all <= state.steps_taken { + if visited.contains(&summary) { // there could come no better solution continue; } if summary.1 == all_keys { - if state.steps_taken < best_found_for_all { - best_found_for_all = state.steps_taken; - } + return state.steps_taken; } state @@ -56,7 +53,7 @@ fn task(map: Map) -> usize { visited.insert(summary); } - best_found_for_all + panic!("if we reach this point no path can be found"); } #[derive(Eq, PartialEq, Hash, Debug)]