private Suduku GetNext(Suduku su) { for (int i = 0; i < (int)su.SudukuType; i++) { for (int j = i + 1; j < (int)su.SudukuType; j++) { var res = su.Swap(su.ValidRow + 1, i, su.ValidRow + 1, j); if (res != null && !dic.ContainsKey(res.GetHashCode())) { return(res); } } } return(null); }
public bool Start(Suduku su) { Queue <Suduku> queue = new Queue <Suduku>(); while (queue.Count > 0) { if (Start(queue.Dequeue())) { return(true); } } return(false); }