示例#1
0
    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)
示例#2
0
    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!")
示例#4
0
 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")
示例#5
0
 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)
示例#6
0
 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")
示例#8
0
    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)
示例#10
0
 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")
示例#11
0
 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")
示例#13
0
 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': ''}
示例#16
0
 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)
示例#23
0
 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")
示例#25
0
 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])
示例#26
0
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)
示例#27
0
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, [])
示例#30
0
 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, [])