def guess(self, *args):
logging.debug("<STR_LIT>")<EOL>logging.debug("<STR_LIT>")<EOL>self._validate_game_object(op="<STR_LIT>")<EOL>logging.debug("<STR_LIT>")<EOL>_return_results = {<EOL>"<STR_LIT>": None,<EOL>"<STR_LIT>": None,<EOL>"<STR_LIT>": [],<EOL>"<STR_LIT:status>": "<STR_LIT>"<EOL>}<EOL>logging.debug("<STR_LIT>")<EOL>if self._g.status.lower() == "<STR_LIT>":<EOL><INDENT>_return_results["<STR_LIT:message>"] = self._start_again("<STR_LIT>")<EOL><DEDENT>elif self._g.status.lower() == "<STR_LIT>":<EOL><INDENT>_return_results["<STR_LIT:message>"] = self._start_again("<STR_LIT>")<EOL><DEDENT>elif self._g.guesses_remaining < <NUM_LIT:1>:<EOL><INDENT>_return_results["<STR_LIT:message>"] = self._start_again("<STR_LIT>")<EOL><DEDENT>elif self._g.ttl < time():<EOL><INDENT>_return_results["<STR_LIT:message>"] = self._start_again("<STR_LIT>")<EOL><DEDENT>else:<EOL><INDENT>logging.debug("<STR_LIT>")<EOL>_wordtype = DigitWord.HEXDIGIT if self._g.mode.lower() == '<STR_LIT>' else DigitWord.DIGIT<EOL>guess = DigitWord(*args, wordtype=_wordtype)<EOL>logging.debug("<STR_LIT>")<EOL>self._g.guesses_remaining -= <NUM_LIT:1><EOL>self._g.guesses_made += <NUM_LIT:1><EOL>logging.debug("<STR_LIT>")<EOL>_return_results["<STR_LIT>"] = []<EOL>_return_results["<STR_LIT>"] = <NUM_LIT:0><EOL>_return_results["<STR_LIT>"] = <NUM_LIT:0><EOL>logging.debug("<STR_LIT>")<EOL>for i in self._g.answer.compare(guess):<EOL><INDENT>logging.debug("<STR_LIT>".format(i.index))<EOL>if i.match is True:<EOL><INDENT>logging.debug("<STR_LIT>")<EOL>_return_results["<STR_LIT>"] += <NUM_LIT:1><EOL><DEDENT>elif i.in_word is True:<EOL><INDENT>logging.debug("<STR_LIT>")<EOL>_return_results["<STR_LIT>"] += <NUM_LIT:1><EOL><DEDENT>logging.debug("<STR_LIT>")<EOL>_return_results["<STR_LIT>"].append(i.get_object())<EOL><DEDENT>logging.debug("<STR_LIT>")<EOL>if _return_results["<STR_LIT>"] == len(self._g.answer.word):<EOL><INDENT>logging.debug("<STR_LIT>")<EOL>self._g.status = "<STR_LIT>"<EOL>self._g.guesses_remaining = <NUM_LIT:0><EOL>_return_results["<STR_LIT:message>"] = "<STR_LIT>""<STR_LIT>".format(self._get_text_answer())<EOL><DEDENT>elif self._g.guesses_remaining < <NUM_LIT:1>:<EOL><INDENT>logging.debug("<STR_LIT>")<EOL>self._g.status = "<STR_LIT>"<EOL>_return_results["<STR_LIT:message>"] = "<STR_LIT>""<STR_LIT:{}>".format(self._get_text_answer())<EOL><DEDENT>_return_results["<STR_LIT:status>"] = self._g.status<EOL><DEDENT>logging.debug("<STR_LIT>")<EOL>return _return_results<EOL>
guess() allows a guess to be made. Before the guess is made, the method
checks to see if the game has been won, lost, or there are no tries
remaining. It then creates a return object stating the number of bulls
(direct matches), cows (indirect matches), an analysis of the guess (a
list of analysis objects), and a status.

:param args: any number of integers (or string representations of integers)
to the number of Digits in the answer; i.e. in normal mode, there would be
a DigitWord to guess of 4 digits, so guess would expect guess(1, 2, 3, 4)
and a shorter (guess(1, 2)) or longer (guess(1, 2, 3, 4, 5)) sequence will
raise an exception.

:return: a JSON object containing the analysis of the guess:

{
    "cows": {"type": "integer"},
    "bulls": {"type": "integer"},
    "analysis": {"type": "array of DigitWordAnalysis"},
    "status": {"type": "string"}
}