|  | @@ -194,11 +194,113 @@ impl Sudoku {
 | 
	
		
			
				|  |  |                  // Get the value
 | 
	
		
			
				|  |  |                  let value = self.possible[i as usize].iter().next().cloned().unwrap();
 | 
	
		
			
				|  |  |                  // Found one!
 | 
	
		
			
				|  |  | -                println!("Set {:?} to {}", xy(i), value);
 | 
	
		
			
				|  |  | +                println!("Set1 {:?} to {}", xy(i), value);
 | 
	
		
			
				|  |  |                  self.set(xy(i).0, xy(i).1, value);
 | 
	
		
			
				|  |  |                  found_something = true;
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        /*
 | 
	
		
			
				|  |  | +            // Code currently isn't working.
 | 
	
		
			
				|  |  | +            // It seems to eat items that I want and need.
 | 
	
		
			
				|  |  | +            // Notably 1 from the 0,7.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            // Look for single possibility in a group
 | 
	
		
			
				|  |  | +            let mut g = Group::new();
 | 
	
		
			
				|  |  | +            for i in 0..SIZE {
 | 
	
		
			
				|  |  | +                let (x, y) = xy(i);
 | 
	
		
			
				|  |  | +                let mut values: HashSet<u8> = HashSet::new();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                g.for_block(x, y);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                // collect all the possible values within these sets.
 | 
	
		
			
				|  |  | +                values.clear();
 | 
	
		
			
				|  |  | +                for gidx in 0..SIZE {
 | 
	
		
			
				|  |  | +                    for v in g.items[gidx as usize] {
 | 
	
		
			
				|  |  | +                        values.insert(v);
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                    // values.extend(self.possible[g.items[gidx as usize] as usize].clone());
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                // Ok!  Now, check for singles:
 | 
	
		
			
				|  |  | +                for v in values.iter() {
 | 
	
		
			
				|  |  | +                    let mut count = 0;
 | 
	
		
			
				|  |  | +                    let mut pos = 0;
 | 
	
		
			
				|  |  | +                    for gidx in 0..SIZE {
 | 
	
		
			
				|  |  | +                        if self.possible[g.items[gidx as usize] as usize].contains(&v) {
 | 
	
		
			
				|  |  | +                            count += 1;
 | 
	
		
			
				|  |  | +                            pos = g.items[gidx as usize];
 | 
	
		
			
				|  |  | +                        }
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                    if count == 1 {
 | 
	
		
			
				|  |  | +                        let value = self.possible[pos as usize].iter().next().cloned().unwrap();
 | 
	
		
			
				|  |  | +                        println!("Set2 {:?} to {}", xy(pos), value);
 | 
	
		
			
				|  |  | +                        self.set(xy(pos).0, xy(pos).1, value);
 | 
	
		
			
				|  |  | +                        found_something = true;
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                g.for_row(x, y);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                // collect all the possible values within these sets.
 | 
	
		
			
				|  |  | +                values.clear();
 | 
	
		
			
				|  |  | +                for gidx in 0..SIZE {
 | 
	
		
			
				|  |  | +                    for v in g.items[gidx as usize] {
 | 
	
		
			
				|  |  | +                        values.insert(v);
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                    // values.extend(self.possible[g.items[gidx as usize] as usize].clone());
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                // Ok!  Now, check for singles:
 | 
	
		
			
				|  |  | +                for v in values.iter() {
 | 
	
		
			
				|  |  | +                    let mut count = 0;
 | 
	
		
			
				|  |  | +                    let mut pos = 0;
 | 
	
		
			
				|  |  | +                    for gidx in 0..SIZE {
 | 
	
		
			
				|  |  | +                        if self.possible[g.items[gidx as usize] as usize].contains(&v) {
 | 
	
		
			
				|  |  | +                            count += 1;
 | 
	
		
			
				|  |  | +                            pos = g.items[gidx as usize];
 | 
	
		
			
				|  |  | +                        }
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                    if count == 1 {
 | 
	
		
			
				|  |  | +                        let value = self.possible[pos as usize].iter().next().cloned().unwrap();
 | 
	
		
			
				|  |  | +                        println!("Set2 {:?} to {}", xy(pos), value);
 | 
	
		
			
				|  |  | +                        self.set(xy(pos).0, xy(pos).1, value);
 | 
	
		
			
				|  |  | +                        found_something = true;
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                g.for_column(x, y);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                // collect all the possible values within these sets.
 | 
	
		
			
				|  |  | +                values.clear();
 | 
	
		
			
				|  |  | +                for gidx in 0..SIZE {
 | 
	
		
			
				|  |  | +                    for v in g.items[gidx as usize] {
 | 
	
		
			
				|  |  | +                        values.insert(v);
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                    // values.extend(self.possible[g.items[gidx as usize] as usize].clone());
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                // Ok!  Now, check for singles:
 | 
	
		
			
				|  |  | +                for v in values.iter() {
 | 
	
		
			
				|  |  | +                    let mut count = 0;
 | 
	
		
			
				|  |  | +                    let mut pos = 0;
 | 
	
		
			
				|  |  | +                    for gidx in 0..SIZE {
 | 
	
		
			
				|  |  | +                        if self.possible[g.items[gidx as usize] as usize].contains(&v) {
 | 
	
		
			
				|  |  | +                            count += 1;
 | 
	
		
			
				|  |  | +                            pos = g.items[gidx as usize];
 | 
	
		
			
				|  |  | +                        }
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                    if count == 1 {
 | 
	
		
			
				|  |  | +                        let value = self.possible[pos as usize].iter().next().cloned().unwrap();
 | 
	
		
			
				|  |  | +                        println!("Set2 {:?} to {}", xy(pos), value);
 | 
	
		
			
				|  |  | +                        self.set(xy(pos).0, xy(pos).1, value);
 | 
	
		
			
				|  |  | +                        found_something = true;
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        */
 | 
	
		
			
				|  |  |          found_something
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  }
 | 
	
	
		
			
				|  | @@ -279,7 +381,10 @@ fn main() {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      while s.solve() {
 | 
	
		
			
				|  |  |          println!("Try it again...");
 | 
	
		
			
				|  |  | +        s.display();
 | 
	
		
			
				|  |  | +        s.display_possible();
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      s.display();
 | 
	
		
			
				|  |  |      s.display_possible();
 | 
	
		
			
				|  |  |  
 |