private ErrorLogger makeGuesses(ref bool foundSolution) { //Console.WriteLine("Entering make guesses"); int minValCount = 10; int minValID = -1; short[] curBoardArray = new short[81]; short[] nextBoardArray = new short[81]; //finds ID of box with minimum # potential values for (int i = 0; i < 81; i++) { curBoardArray[i] = numBoxes[i].getValue(); nextBoardArray[i] = numBoxes[i].getValue(); int t = numBoxes[i].getPV().Count; if (t < minValCount && t >0) { minValCount = t; minValID = i; } } List<short> possibleNums = new List<short>(); possibleNums.Clear(); possibleNums.AddRange(numBoxes[minValID].getPV()); //Console.WriteLine("MinValID=" + minValID + "minValCount=" + minValCount); int numAttempts = 0; ErrorLogger RV = new ErrorLogger(); while (numAttempts < minValCount) //presumably should only not have an error if board complete { RV = new ErrorLogger(); Console.WriteLine("making guess, box: " + minValID + " value: " + possibleNums[numAttempts]); //Console.ReadLine(); nextBoardArray[minValID] = possibleNums[numAttempts]; SDBoard newBoard = new SDBoard(nextBoardArray); RV = RV + newBoard.solve(ref foundSolution); if (foundSolution) { /*for(int i = 0; i < RV.getS().Count; i++) { Console.Write(RV.getV()[i]); Console.WriteLine(RV.getS()[i]); } Console.Write(RV.hasError()); Console.WriteLine("Guess box: " + minValID + " value: " + possibleNums[numAttempts] + " found Solution"); //Console.ReadLine();*/ Console.WriteLine("Guess box: " + minValID + " value: " + possibleNums[numAttempts] + " found Solution"); break; } else { /* for (int i = 0; i < RV.getS().Count; i++) { Console.Write(RV.getV()[i]); Console.WriteLine(RV.getS()[i]); } Console.Write(RV.hasError()); Console.WriteLine("Guess box: " + minValID + " value: " + possibleNums[numAttempts] + " failed due to: " + RV.getS()[0]); //Console.ReadLine(); * */ Console.WriteLine("Guess box: " + minValID + " value: " + possibleNums[numAttempts] + " failed due to: " + RV.getS()[0]); } numAttempts++; } return RV; }
public ErrorLogger(SDBoard SD) { completeBoard = SD; errorVal.Add(0); errorString.Add("Board succesfully solved"); }
private void setupBoard(short[] filledArray) { gameBoard = new SDBoard(filledArray); for (short i = 0; i < 81; i++) { TextBox TB = gameBoard.getNumBoxTB(i); this.Controls.Add(TB); TB.TabIndex = i + 2; TB.BringToFront(); } }