Impl: populate values
This commit is contained in:
@@ -24,15 +24,18 @@ impl SudokuSolver {
|
|||||||
|
|
||||||
let possible_values_row = possible_values_from_vec(row, self.playfield.size as u32);
|
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_index = open_field % self.playfield.size;
|
||||||
let col = self.playfield.get_column(col_index);
|
let col = self.playfield.get_column(col_index);
|
||||||
let possible_values_col = possible_values_from_vec(&col, self.playfield.size as u32);
|
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
|
let possible_values = possible_values_row
|
||||||
.symmetric_difference(&possible_values_col)
|
.intersection(&possible_values_col)
|
||||||
.map(|v| *v)
|
.map(|v| *v)
|
||||||
.collect();
|
.collect();
|
||||||
|
|
||||||
|
println!("{:?}", possible_values);
|
||||||
let row = &mut self.playfield.fields[row_index];
|
let row = &mut self.playfield.fields[row_index];
|
||||||
let field = &mut row[col_index];
|
let field = &mut row[col_index];
|
||||||
field.possible_values = possible_values;
|
field.possible_values = possible_values;
|
||||||
@@ -50,7 +53,7 @@ fn possible_values_from_vec(row: &Vec<Field>, max_value: u32) -> HashSet<u32> {
|
|||||||
.collect();
|
.collect();
|
||||||
|
|
||||||
possible_values
|
possible_values
|
||||||
.symmetric_difference(&populated_values)
|
.difference(&populated_values)
|
||||||
.map(|v| *v)
|
.map(|v| *v)
|
||||||
.collect()
|
.collect()
|
||||||
}
|
}
|
||||||
@@ -85,10 +88,10 @@ mod tests {
|
|||||||
#[test]
|
#[test]
|
||||||
fn simple() {
|
fn simple() {
|
||||||
let solver = &mut setup_solver("1 0 0 3 0 0 2 3 1", 3);
|
let solver = &mut setup_solver("1 0 0 3 0 0 2 3 1", 3);
|
||||||
let expected_1 = vec![2, 3];
|
let expected_1 = vec![2];
|
||||||
let expected_2 = vec![2, 3];
|
let expected_2 = vec![3, 2];
|
||||||
let expected_3 = vec![1, 2];
|
let expected_3 = vec![2, 1];
|
||||||
let expected_4 = vec![1, 2];
|
let expected_4 = vec![2];
|
||||||
|
|
||||||
solver.populate_possible_values();
|
solver.populate_possible_values();
|
||||||
|
|
||||||
@@ -110,7 +113,7 @@ mod tests {
|
|||||||
#[test]
|
#[test]
|
||||||
fn simple() {
|
fn simple() {
|
||||||
let playfield = create_test_playfield("1 2 0 3 0 0 0 0 0", 3);
|
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_2 = vec![1, 2];
|
||||||
let expected_row_3 = vec![1, 2, 3];
|
let expected_row_3 = vec![1, 2, 3];
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user