public Puzzle findSolution()
    {
        iterativeLogicSolve();
        printPuzzle();
        if(getTruthState()==1)
        {
            return this;
        }
        else if(getTruthState()==-1)
        {
            return null;
        }
        else
        {
            Cell c = this.getChoice();
            ArrayList<Integer> guesses = c.getPosNumbers();
            Puzzle solution = null;
            for(int i=0; i<guesses.size(); i++)
            {
                Puzzle guess = this.clone();
                guess.getCell(c.getRow(), c.getCol()).setValue(guesses.get(i));
                Puzzle terminal = guess.findSolution();
                if(terminal!=null)
                {
                    solution = terminal;
                    i = guesses.size();
                }
            }
            return solution;
        }
    }