|  | @@ -289,8 +289,56 @@ impl Sudoku {
 | 
	
		
			
				|  |  |                                      }
 | 
	
		
			
				|  |  |                                      // Ok, these aren't the ones to save, so:
 | 
	
		
			
				|  |  |                                      let rpos = g.items[remove as usize];
 | 
	
		
			
				|  |  | -                                    self.possible[rpos as usize].take(&values[0]);
 | 
	
		
			
				|  |  | -                                    self.possible[rpos as usize].take(&values[1]);
 | 
	
		
			
				|  |  | +                                    if self.possible[rpos as usize].take(&values[0]).is_some() {
 | 
	
		
			
				|  |  | +                                        found_something = true;
 | 
	
		
			
				|  |  | +                                    };
 | 
	
		
			
				|  |  | +                                    if self.possible[rpos as usize].take(&values[1]).is_some() {
 | 
	
		
			
				|  |  | +                                        found_something = true;
 | 
	
		
			
				|  |  | +                                    };
 | 
	
		
			
				|  |  | +                                }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                                // Check the x's and y's to see if we can also process a row/column too.
 | 
	
		
			
				|  |  | +                                if xy(gpos).0 == xy(fpos).0 {
 | 
	
		
			
				|  |  | +                                    // Matching X - process column
 | 
	
		
			
				|  |  | +                                    let column = xy(gpos).0;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                                    vpos = 0;
 | 
	
		
			
				|  |  | +                                    for z in self.possible[gpos as usize].iter() {
 | 
	
		
			
				|  |  | +                                        values[vpos] = *z;
 | 
	
		
			
				|  |  | +                                        vpos +=1;
 | 
	
		
			
				|  |  | +                                    }
 | 
	
		
			
				|  |  | +                                    for remove in 0..SIZE {
 | 
	
		
			
				|  |  | +                                        if (remove == xy(gpos).1) || (remove == xy(fpos).1) {
 | 
	
		
			
				|  |  | +                                            continue;
 | 
	
		
			
				|  |  | +                                        }
 | 
	
		
			
				|  |  | +                                        if self.possible[pos(column, remove) as usize].take(&values[0]).is_some() {
 | 
	
		
			
				|  |  | +                                            found_something = true;
 | 
	
		
			
				|  |  | +                                        };
 | 
	
		
			
				|  |  | +                                        if self.possible[pos(column, remove) as usize].take(&values[1]).is_some() {
 | 
	
		
			
				|  |  | +                                            found_something = true;
 | 
	
		
			
				|  |  | +                                        };
 | 
	
		
			
				|  |  | +                                    }
 | 
	
		
			
				|  |  | +                                }
 | 
	
		
			
				|  |  | +                                if xy(gpos).1 == xy(fpos).1 {
 | 
	
		
			
				|  |  | +                                    // Matching Y - process row
 | 
	
		
			
				|  |  | +                                    let row = xy(gpos).1;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                                    vpos = 0;
 | 
	
		
			
				|  |  | +                                    for z in self.possible[gpos as usize].iter() {
 | 
	
		
			
				|  |  | +                                        values[vpos] = *z;
 | 
	
		
			
				|  |  | +                                        vpos +=1;
 | 
	
		
			
				|  |  | +                                    }
 | 
	
		
			
				|  |  | +                                    for remove in 0..SIZE {
 | 
	
		
			
				|  |  | +                                        if (remove == xy(gpos).0) || (remove == xy(fpos).0) {
 | 
	
		
			
				|  |  | +                                            continue;
 | 
	
		
			
				|  |  | +                                        }
 | 
	
		
			
				|  |  | +                                        if self.possible[pos(remove, row) as usize].take(&values[0]).is_some() {
 | 
	
		
			
				|  |  | +                                            found_something = true;
 | 
	
		
			
				|  |  | +                                        };
 | 
	
		
			
				|  |  | +                                        if self.possible[pos(remove, row) as usize].take(&values[1]).is_some() {
 | 
	
		
			
				|  |  | +                                            found_something = true;
 | 
	
		
			
				|  |  | +                                        };
 | 
	
		
			
				|  |  | +                                    }
 | 
	
		
			
				|  |  |                                  }
 | 
	
		
			
				|  |  |                              }
 | 
	
		
			
				|  |  |                          }
 |