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; }