public static string DFSAlgo(Stack <TextBox[, ]> stack, TextBox[,] box, Sudoku.Form1 form, TextBox memory) { while (stack.Count != 0) { if (stack.Count > Resources.memory) { Resources.memory = stack.Count; } memory.Text = Resources.memory.ToString(); TextBox[,] node_box = stack.Pop(); CopyBox(node_box, box); form.Update(); bool full_box = true; List <TextBox[, ]> list = NextPossibleBoxes(node_box, ref full_box); if (full_box) { break; } else { foreach (TextBox[,] b in list) { stack.Push(b); } } } if (stack.Count == 0) { return("Cannot solve"); } else { return("DONE"); } }
public static void HillClimbingAlgo2(TextBox[,] current_box, int current_val, bool[,] is_fixed, TextBox[,] box, Sudoku.Form1 form, TextBox display, TextBox memory) { memory.Text = (++Resources.memory).ToString(); while (current_val != 0) { TextBox[,] new_successor = NewSuccessor(current_box, is_fixed, current_val); CopyBox(new_successor, box); form.Update(); display.Text = current_val.ToString(); int new_val = HeuristicFunc2(new_successor); if (new_val < current_val) { HillClimbingAlgo2(new_successor, new_val, is_fixed, box, form, display, memory); } } }
public static string BFSAlgo(Queue <TextBox[, ]> queue, TextBox[,] box, Sudoku.Form1 form, TextBox memory) { bool done_flag = false; while (queue.Count != 0) { if (queue.Count > Resources.memory) { Resources.memory = queue.Count; } memory.Text = Resources.memory.ToString(); TextBox[,] node_box = queue.Dequeue(); CopyBox(node_box, box); form.Update(); bool full_box = true; List <TextBox[, ]> list = NextPossibleBoxes(node_box, ref full_box); if (full_box) { done_flag = true; break; } else { foreach (TextBox[,] b in list) { queue.Enqueue(b); } } } if (done_flag) { return("DONE"); } else { return("Cannot solve"); } }