From 01439b221e56eb10b6124cda7ea18d61709f6f37 Mon Sep 17 00:00:00 2001 From: Jonas Zeunert Date: Tue, 20 Feb 2024 00:21:37 +0100 Subject: [PATCH] Impl: populate values --- src/sudoku_solver.rs | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/sudoku_solver.rs b/src/sudoku_solver.rs index 8cafbec..dbb0d66 100644 --- a/src/sudoku_solver.rs +++ b/src/sudoku_solver.rs @@ -24,15 +24,18 @@ impl SudokuSolver { let possible_values_row = possible_values_from_vec(row, self.playfield.size as u32); + println!("row {:?}", possible_values_row); let col_index = open_field % self.playfield.size; let col = self.playfield.get_column(col_index); let possible_values_col = possible_values_from_vec(&col, self.playfield.size as u32); + println!("col {:?}", possible_values_col); let possible_values = possible_values_row - .symmetric_difference(&possible_values_col) + .intersection(&possible_values_col) .map(|v| *v) .collect(); + println!("{:?}", possible_values); let row = &mut self.playfield.fields[row_index]; let field = &mut row[col_index]; field.possible_values = possible_values; @@ -50,7 +53,7 @@ fn possible_values_from_vec(row: &Vec, max_value: u32) -> HashSet { .collect(); possible_values - .symmetric_difference(&populated_values) + .difference(&populated_values) .map(|v| *v) .collect() } @@ -85,10 +88,10 @@ mod tests { #[test] fn simple() { let solver = &mut setup_solver("1 0 0 3 0 0 2 3 1", 3); - let expected_1 = vec![2, 3]; - let expected_2 = vec![2, 3]; - let expected_3 = vec![1, 2]; - let expected_4 = vec![1, 2]; + let expected_1 = vec![2]; + let expected_2 = vec![3, 2]; + let expected_3 = vec![2, 1]; + let expected_4 = vec![2]; solver.populate_possible_values(); @@ -110,7 +113,7 @@ mod tests { #[test] fn simple() { let playfield = create_test_playfield("1 2 0 3 0 0 0 0 0", 3); - let expected_row_1 = vec![3]; + let expected_row_1 = HashSet::from_iter(vec![3]); let expected_row_2 = vec![1, 2]; let expected_row_3 = vec![1, 2, 3];