def test9(self): #this student generated test ensures retracting a fact that supports two or more facts or rules #successfully retracts all inferred facts and rules r1 = read.parse_input("fact: (techgenius profHammond)") print(' Retracting', r1) self.KB.kb_retract(r1) ask1 = read.parse_input("fact: (employable ?X)") print(' Asking if', ask1) answer = self.KB.kb_ask(ask1) self.assertFalse(answer) ask2 = read.parse_input("fact: (smart ?X)") print(' Asking if', ask2) answer = self.KB.kb_ask(ask2) self.assertFalse(answer)
def test6(self): #this student generated test ensures retract only removes facts and rules that are supported by #1 or less fact-rule pairs r1 = read.parse_input("fact: (dresslike profHammond TonyStark)") print(' Retracting', r1) self.KB.kb_retract(r1) ask1 = read.parse_input("fact: (isliterally ?X TonyStark)") print(' Asking if', ask1) answer = self.KB.kb_ask(ask1) self.assertEqual(str(answer[0]), "?X : profHammond") ask2 = read.parse_input("fact: (resembles profHammond ?Y)") print(' Asking if', ask2) answer = self.KB.kb_ask(ask2) self.assertFalse(answer)
def test6(self): self.KB.kb_assert(read.parse_input("fact: (color box34 blue)")) self.KB.kb_assert(read.parse_input("fact: (color box34 red)")) a = self.KB.kb_ask(read.parse_input("fact: (color box34 ?Y)")) self.assertEqual(str(a[0]), "?Y : blue") self.assertEqual(str(a[1]), "?Y : red") b = self.KB.kb_ask(read.parse_input("fact: (color box34 blue)")) self.assertEqual(b[0].bindings, []) c = self.KB.kb_ask(read.parse_input("fact: (color box400 blue)")) self.assertEqual(c, False) print("Test 6 passed!")
def test5(self): print( '--------------------------------TEST 5----------------------------' ) # makes sure retract does not deal with rules ask1 = read.parse_input("fact: (parentof ada ?X)") print(' Asking if', ask1) answer = self.KB.kb_ask(ask1) self.assertEqual(str(answer[0]), "?X : bing") r1 = read.parse_input("rule: ((motherof ?x ?y)) -> (parentof ?x ?y)") print(' Retracting', r1) self.KB.kb_retract(r1) print(' Asking if', ask1) answer = self.KB.kb_ask(ask1) self.assertEqual(str(answer[0]), "?X : bing")
def test2(self): ask1 = read.parse_input("fact: (color littlebox red)") print(' Asking if', ask1) answer = self.KB.kb_ask(ask1) # print("test2") print(answer) self.assertFalse(answer)
def test5(self): ask1 = read.parse_input("fact: (isa ?X ?Y)") print(' Asking if', ask1) answer = self.KB.kb_ask(ask1) self.assertEqual(str(answer[0]), "?X : dragon, ?Y : monster") self.assertEqual(str(answer[1]), "?X : giant, ?Y : monster") self.assertEqual(str(answer[2]), "?X : dog, ?Y : animal")
def test7(self): r1 = read.parse_input("fact: (lookslike profHammond TonyStark)") print(' Retracting', r1) self.KB.kb_retract(r1) ask1 = read.parse_input("fact: (resembles profHammond ?Y)") print(' Asking if', ask1) answer = self.KB.kb_ask(ask1) self.assertFalse(answer) a1 = read.parse_input("fact: (lookslike profHammond TonyStark)") print(' Reasserting', a1) self.KB.kb_assert(a1) ask2 = read.parse_input("fact: (resembles profHammond ?Y)") print(' Asking if', ask2) answer = self.KB.kb_ask(ask2) self.assertEqual(str(answer[0]), "?Y : TonyStark")
def getGameState(self): """ Returns a representation of the the game board in the current state. The output should be a Tuple of Three Tuples. Each inner tuple should represent a row of tiles on the board. Each tile should be represented with an integer; the empty space should be represented with -1. For example, the output should adopt the following format: ((1, 2, 3), (4, 5, 6), (7, 8, -1)) Returns: A Tuple of Tuples that represent the game state """ row = read.parse_input("fact: (loc ?t ?x ?y)") r1 = [0,0,0] r2 = [0,0,0] r3 = [0,0,0] for f in self.kb.facts: binding = match(f.statement, row.statement) if binding: y = binding.bindings_dict.get('?y') x = int(binding.bindings_dict.get('?x')[3]) - 1 t = binding.bindings_dict.get('?t') if(t == 'empty'): tr = -1 else: tr = int(t[4]) if (y == 'pos1'): r1[int(x)] = tr elif (y == 'pos2'): r2[int(x)] = tr elif (y == 'pos3'): r3[int(x)] = tr ans = (tuple(r1), tuple(r2), tuple(r3)) return ans
def test6(self): assert1 = read.parse_input("fact: (color bigbox red)") print(' Asserting ', assert1) self.KB.kb_assert(assert1) print(' Asking if', assert1) answer = self.KB.kb_ask(assert1) self.assertEqual(len(answer),1)
def test9(self): ask1 = read.parse_input("fact: (friendly ?X)") print(' Asking if', ask1) answer = self.KB.kb_ask(ask1) self.assertEqual(str(answer[0]), "?X : Uzna") self.assertEqual(str(answer[1]), "?X : Hershey") self.assertEqual(str(answer[2]), "?X : Ai")
def test1(self): print("--------------------TEST ONE-----------------------") # Did the student code contain syntax errors, AttributeError, etc. ask1 = read.parse_input("fact: (motherof ada ?X)") print(' Asking if', ask1) answer = self.KB.kb_ask(ask1) self.assertEqual(str(answer[0]), "?X : bing")
def test4(self): # makes sure retract does not retract supported fact ask1 = read.parse_input("fact: (grandmotherof ada ?X)") print(' Asking if', ask1) answer = self.KB.kb_ask(ask1) self.assertEqual(str(answer[0]), "?X : felix") self.assertEqual(str(answer[1]), "?X : chen") r1 = read.parse_input("fact: (grandmotherof ada chen)") print(' Retracting', r1) self.KB.kb_retract(r1) print(' Asking if', ask1) answer = self.KB.kb_ask(ask1) self.assertEqual(str(answer[0]), "?X : felix") self.assertEqual(str(answer[1]), "?X : chen")
def test9(self): ask1 = read.parse_input("fact: (isa ?X block)") print(' Asking if', ask1) answer = self.KB.kb_ask(ask1) self.assertEqual(str(answer[0]), "?X : cube") self.assertEqual(str(answer[1]), "?X : pyramid") self.assertEqual(str(answer[2]), "?X : sphere")
def test2_1(self): ask1 = read.parse_input("fact: (attacked Ai Nosliw)") print(' Asking if', ask1) answer = self.KB.kb_ask(ask1) self.assertEqual(answer[0].bindings, []) #self.assertEqual(aswer.list_of_bindings[0][1][0], ask1) print("test 2_1 passed!")
def decide_next_move(gridsize, currgrid): for i in range(gridsize): for j in range(gridsize): if currgrid[i][j] == ' ': cell_str = str(i) + '_' + str(j) _, ask_safe = read.parse_input("fact: (safe " + cell_str + ")") if KB.kb_ask(ask_safe): print("marking safe " + str([i, j])) return {'cell': (i, j), 'flag': False, 'message': ''} _, ask_bomb = read.parse_input("fact: (bomb " + cell_str + ")") if KB.kb_ask(ask_bomb): print("marking bomb " + str([i, j])) return {'cell': (i, j), 'flag': True, 'message': ''} print("guessing...") return {'cell': getrandomcell(currgrid), 'flag': False, 'message': ''}
def test2(self): ask1 = read.parse_input("fact: (grandmotherof ada ?X)") print(' ---Asking if', ask1) answer = self.KB.kb_ask(ask1) self.assertEqual(len(answer), 2) self.assertEqual(str(answer[0]), "?X : felix") self.assertEqual(str(answer[1]), "?X : chen")
def test5(self): fact1 = read.parse_input("fact: (hero a)") fact2 = read.parse_input("fact: (person a)") self.KB.kb_retract(fact1) self.KB.kb_retract(fact2) ask1 = read.parse_input("fact: (goodman ?X") answer1 = self.KB.kb_ask(ask1) self.assertEqual(len(answer1), 1) self.assertEqual(str(answer1[0]), "?X : a") fact3 = read.parse_input("fact: (goodman a)") self.KB.kb_retract(fact3) ask1 = read.parse_input("fact: (goodman ?X") answer1 = self.KB.kb_ask(ask1) self.assertEqual(len(answer1), 0)
def test3(self): ask1 = read.parse_input("fact: (color ?X red)") print(' Asking if', ask1) answer = self.KB.kb_ask(ask1) self.assertEqual(str(answer[0]), "?X : bigbox") self.assertEqual(str(answer[1]), "?X : pyramid3") self.assertEqual(str(answer[2]), "?X : pyramid4")
def test2(self): # Can fc_infer actually infer ask1 = read.parse_input("fact: (grandmotherof ada ?X)") print(' Asking if', ask1) answer = self.KB.kb_ask(ask1) self.assertEqual(str(answer[0]), "?X : felix") self.assertEqual(str(answer[1]), "?X : chen")
def test1a(self): # Did the student code contain syntax errors, AttributeError, etc. ask1 = read.parse_input("fact: (parentof ada ?X)") print(' Asking if', ask1) answer = self.KB.kb_ask(ask1) self.assertEqual(str(answer[0]), "?X : bing") self.assertEqual(len(answer), 1)
def test1b(self): # Did the student code contain syntax errors, AttributeError, etc. ask1 = read.parse_input("fact: (parentof ada bing)") print(' Asking if', ask1) answer = self.KB.kb_ask(ask1) print(answer) self.assertEqual(answer.list_of_bindings[0][0].bindings, [])
def test13(self): item1 = Fact("rule: ((inst ?x ?y) (isa ?y ?z)) -> (inst ?x ?z)") self.KB.kb_assert(item1) ask1 = read.parse_input( "rule: ((inst ?x ?y) (isa ?y ?z)) -> (inst ?x ?z)") print(' Asking if', ask1) answer = self.KB.kb_ask(ask1) self.assertFalse(answer)
def test6(self): ask1 = read.parse_input("fact: (inst ?X cube)") print(' Asking if', ask1) answer = self.KB.kb_ask(ask1) self.assertEqual(str(answer[0]), "?X : cube1") self.assertEqual(str(answer[1]), "?X : cube2") self.assertEqual(str(answer[2]), "?X : cube3") self.assertEqual(str(answer[3]), "?X : cube4")
def test3(self): ask1 = read.parse_input("fact: (inst ?X pyramid)") print(' Asking if', ask1) answer = self.KB.kb_ask(ask1) self.assertEqual(str(answer[0]), "?X : pyramid1") self.assertEqual(str(answer[1]), "?X : pyramid2") self.assertEqual(str(answer[2]), "?X : pyramid3") self.assertEqual(str(answer[3]), "?X : pyramid4")
def test2(self): ask1 = read.parse_input("fact: (color littlebox red)") print(' Asking if', ask1) answer = self.KB.kb_ask(ask1) self.assertFalse(answer) print(self.KB.facts) for i in range(len(self.KB.facts)): print(self.KB.facts[i])
def main(): KB = KnowledgeBase([], []) _, fact1 = read.parse_input("fact: (rela A X)") _, fact2 = read.parse_input("fact: (relb B X)") _, fact3 = read.parse_input("fact: (relc C X)") _, fact4 = read.parse_input("fact: (reld D X)") _, fact5 = read.parse_input("fact: (rele E X)") _, rule1 = read.parse_input( "rule: ((rela ?a ?x) (relb ?b ?x) (relc ?c ?x) (reld ?d ?x) (rele ?e ?x)) -> (relf ?x)" ) _, ask1 = read.parse_input("fact: (relf X)") KB.kb_assert(fact1) KB.kb_assert(fact2) KB.kb_assert(fact3) KB.kb_assert(fact4) KB.kb_assert(fact5) KB.kb_assert(rule1) answer1 = KB.kb_ask(ask1) if answer1: print "pass test8" exit(0) else: print "fail test8" exit(1)
def main(): KB = KnowledgeBase([], []) _, fact1 = read.parse_input("fact: (hero A)") _, fact2 = read.parse_input("fact: (person A)") _, rule1 = read.parse_input( "rule: ((hero ?x) (person ?x)) -> (goodman ?x)") _, rule2 = read.parse_input( "rule: ((goodman ?x) (wenttoschool ?x)) -> (doctor ?x)") _, fact3 = read.parse_input("fact: (wenttoschool A)") _, ask1 = read.parse_input("fact: (goodman A)") _, ask2 = read.parse_input("fact: (doctor A)") KB.kb_assert(fact1) KB.kb_assert(fact2) KB.kb_assert(rule1) answer1 = KB.kb_ask(ask1) KB.kb_assert(rule2) KB.kb_assert(fact3) answer2 = KB.kb_ask(ask2) if answer1 and answer2: print "pass test3" exit(0) else: print "fail test3" exit(1)
def test7(self): """this student generated test ensures retracting the 2nd fact in the lhs of a rule successfully retracts the final inferred fact but re-assertion re-infers the fact """ r1 = read.parse_input("fact: (lookslike profHammond TonyStark)") print(' Retracting', r1) self.KB.kb_retract(r1) ask1 = read.parse_input("fact: (resembles profHammond ?Y)") print(' Asking if', ask1) answer = self.KB.kb_ask(ask1) self.assertFalse(answer) a1 = read.parse_input("fact: (lookslike profHammond TonyStark)") print(' Reasserting', a1) self.KB.kb_assert(a1) ask2 = read.parse_input("fact: (resembles profHammond ?Y)") print(' Asking if', ask2) answer = self.KB.kb_ask(ask2) self.assertEqual(str(answer[0]), "?Y : TonyStark")
def test1c(self): # Did the student code contain syntax errors, AttributeError, etc. r1 = read.parse_input("fact: (parentof ada bing)") print(' Retracting', r1) self.KB.kb_retract(r1) answer = self.KB.kb_ask( r1 ) # cannot retract because this is supported by (motherof ada bing) self.assertFalse(answer.list_of_bindings[0][0].bindings, [])
def test1(self): ask1 = read.parse_input("fact: (color bigbox red)") print("") print('Asking if', ask1) print("") answer = self.KB.kb_ask(ask1) # print("test1") print(answer) self.assertEqual(answer[0].bindings, [])