Exemple #1
0
    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();
     }
 }