/////////////////////////////////////////////////////////////////////// // STANFORD LOGIC GROUP // // General Game Playing Project // // // // Sample Player Implementation // // // // (c) 2007. See LICENSE and CONTRIBUTORS. // /////////////////////////////////////////////////////////////////////// package stanfordlogic.game; import java.util.List; import java.util.Random; import stanfordlogic.gdl.GdlList; import stanfordlogic.gdl.Parser; import stanfordlogic.gdl.SymbolTable; import stanfordlogic.prover.AbstractReasoner; import stanfordlogic.prover.Fact; import stanfordlogic.prover.GroundFact; import stanfordlogic.prover.ProofContext; import stanfordlogic.prover.VariableFact; public class ReasoningEntity { /** Parser */ final protected Parser parser_; /** Symbol table */ final protected SymbolTable symbolTable_; /** Reasoner */ protected AbstractReasoner reasoner_; /** Random generator */ protected Random random_; final protected Fact QUERY_TERMINAL; final protected Fact QUERY_NEXT; protected ReasoningEntity(Parser parser) { parser_ = parser; symbolTable_ = parser_.getSymbolTable(); QUERY_TERMINAL = makeQuery("terminal"); QUERY_NEXT = makeQuery("next", "?x"); random_ = new Random(); } public AbstractReasoner getReasoner() { return reasoner_; } protected Fact makeQuery(String ... args) { GdlList list = GdlList.buildFromWords(symbolTable_, args); Fact query = VariableFact.fromList(list); return query; } /** * Wrapper around Reasoner#getAllAnswers * * @param context * The context to be used in the proof. Contains volatile data, * cache, etc. * @param args * The question (query) as a list of words * * @return a list of facts answering the input query * @see camembert.knowledge.reasoner.getAllAnswers */ protected List<GroundFact> getAllAnswers(ProofContext context, String ... args) { Fact question = makeQuery(args); return reasoner_.getAllAnswers(question, context); } protected Iterable<GroundFact> getAllAnswersIterable(ProofContext context, String ... args) { Fact question = makeQuery(args); return reasoner_.getAllAnswersIterable(question, context); } /** * Wrapper around Reasoner#getAnAnswer * * @param context * The context to be used in the proof. Contains volatile data, * cache, etc. * @param args * The question (query) as a list of words * * @return a fact answering the input query * @see camembert.knowledge.reasoner.getAnAnswer */ protected GroundFact getAnAnswer(ProofContext context, String ... args) { Fact question = makeQuery(args); return reasoner_.getAnAnswer(question, context); } }