Exemplo n.º 1
0
  def not_unsafe(self):
    """
    Use logic to determine the set of locations I can't prove to be unsafe
    """
    not_unsafe_spots = set()
    for x in range(1, self.size + 1):
        for y in range(1, self.size + 1):

            #Current location
            loc = "" + str(x) + "_" + str(y)

            if not logic_440.resolution(self.KB, logic.expr("L" + loc)):
                not_unsafe_spots.add((x,y))

            if logic_440.resolution(self.KB, logic.expr("P" + loc)) or logic_440.resolution(self.KB, logic.expr("W" + loc)):
                if not_unsafe_spots.__contains__((x,y)):
                    not_unsafe_spots.remove((x,y))

            # If no smell, and no breeze, then all neighbors are safe locations.
            no_smell = logic_440.resolution(self.KB, logic.expr("~S" + loc))
            no_breeze = logic_440.resolution(self.KB, logic.expr("~B" + loc))
            if (no_smell and no_breeze):
                for n in get_neighbors(x, y, self.size):
                    #print "Adding " + str(n) + " to not_unsafe_spots"
                    not_unsafe_spots.add(n)

    return not_unsafe_spots
Exemplo n.º 2
0
  def safe(self):
    """
    Use logic to determine the set of locations I can prove to be safe.
    """

    safe_spots = set()
    for x in range(1, self.size + 1):
        for y in range(1, self.size + 1):
            #Current location
            loc = "" + str(x) + "_" + str(y)

            #Add current location spot to the safe_spots
            if logic_440.resolution(self.KB, logic.expr("L" + loc)):
                safe_spots.add((x,y))

            #Not a pit or not a wumpus at current location
            if logic_440.resolution(self.KB, logic.expr("~P" + loc)) and logic_440.resolution(self.KB, logic.expr("~W" + loc)):
                safe_spots.add((x,y))

            # If no smell, and no breeze, then all neighbors are safe locations.
            no_smell = logic_440.resolution(self.KB, logic.expr("~S" + loc))
            no_breeze = logic_440.resolution(self.KB, logic.expr("~B" + loc))
            if (no_smell and no_breeze):
                for n in get_neighbors(x, y, self.size):
                    #print "Adding " + str(n) + " to safe_spots"
                    safe_spots.add(n)

    return safe_spots
Exemplo n.º 3
0
  def safe(self):
    safe_zones = set()
    for x in range(1, self.size + 1):
      for y in range(1, self.size + 1):
        if(logic_440.resolution(self.KB, logic.Expr(('~W%d_%d' % (x,y)))) and logic_440.resolution(self.KB, logic.Expr(('~P%d_%d' % (x,y))))):
          safe_zones.add((x,y))

    return safe_zones
Exemplo n.º 4
0
 def not_unsafe(self):
   notunsafe_set = Set([])
   for i in range(1, self.size + 1):
     for j in range(1, self.size + 1):
       pit    = logic.expr("P%d_%d" % (i,j))
       wumpus = logic.expr("W%d_%d" % (i,j))
       if not(((logic_440.resolution(self.KB, pit) or logic_440.resolution(self.KB, wumpus)))):
         notunsafe_set.add((i,j))
   return notunsafe_set
Exemplo n.º 5
0
 def not_unsafe(self):
   not_unsafe_zones = set()
   for x in range(1, self.size + 1):
     for y in range(1, self.size + 1):
       if not (logic_440.resolution(self.KB, logic.Expr(('B%d_%d' % (x,y)))) | logic_440.resolution(self.KB,logic.Expr('S%d_%d' %(x,y)))):
         for z in get_neighbors(x,y,self.size):
           not_unsafe_zones.add(z)
       if not(logic_440.resolution(self.KB, logic.Expr(('P%d_%d' % (x,y)))) | logic_440.resolution(self.KB,logic.Expr('W%d_%d' %(x,y)))):
           not_unsafe_zones.add(z)                       
   return not_unsafe_zones
Exemplo n.º 6
0
 def safe(self):
   safe_set = Set([])
   for i in range(1, self.size + 1):
     for j in range(1, self.size + 1):
       not_pit    = logic.expr("~P%d_%d" % (i,j))
       not_wumpus = logic.expr("~W%d_%d" % (i,j))
       if 'L%d_%d' in self.KB.clauses:
         safe_set.add((i,j))
       elif ((logic_440.resolution(self.KB, not_pit) and logic_440.resolution(self.KB, not_wumpus))):
         safe_set.add((i,j))
   return safe_set
Exemplo n.º 7
0
 def not_unsafe(self):
   #raise NotImplementedError()
   cave_size = self.size
   unsafe = set()
   for x in range(1, cave_size+1):
     for y in range(1, cave_size+1):
       pp = logic_440.resolution(self.KB, logic.Expr("P%d_%d" % (x,y)))
       ww = logic_440.resolution(self.KB, logic.Expr("W%d_%d" % (x,y)))
       if not(pp or ww):
         unsafe.add((x,y))
   return unsafe
Exemplo n.º 8
0
 def safe(self):
   cave_size = self.size
   safety = set()
   ###
   for x in range(1, cave_size+1):
     for y in range(1, cave_size+1):
       pp = logic_440.resolution(self.KB, logic.Expr("~P%d_%d" % (x,y)))
       ww = logic_440.resolution(self.KB, logic.Expr("~W%d_%d" % (x,y)))
       if (pp and ww):
         safety.add((x,y))        
   return safety
Exemplo n.º 9
0
 def unvisited(self):
   unvisited = set()
   for x in range(1, self.size + 1):
     for y in range(1, self.size + 1):
       if not (logic_440.resolution(self.KB, logic.Expr(('L%d_%d' % (x,y))))):
         unvisited.add((x,y))
   return unvisited
Exemplo n.º 10
0
 def unvisited(self):
     unvisitedList = []
     for x in range(1, self.size + 1):
         for y in range(1, self.size + 1):
             s = 'L' + str(x) + '_' + str(y)
             if (logic_440.resolution(self.KB, logic.expr(s)) == False):
                 unvisitedList.append((x, y))
     return set(unvisitedList)
Exemplo n.º 11
0
 def safe(self):
     safeList = []
     for x in range(1, self.size + 1):
         for y in range(1, self.size + 1):
             s = '~W' + str(x) + '_' + str(y) + ' & ' + '~P' + str(
                 x) + '_' + str(y)
             if (logic_440.resolution(self.KB, logic.expr(s)) == True):
                 safeList.append((x, y))
     return set(safeList)
Exemplo n.º 12
0
 def unvisited(self):
   #raise NotImplementedError()
   cave_size = self.size
   visit = set()
   for x in range(1, cave_size+1):
     for y in range(1, cave_size+1):
       if not (logic_440.resolution(self.KB, logic.Expr("L%d_%d" % (x,y)))):
         visit.add((x,y))
   return visit
Exemplo n.º 13
0
  def unvisited(self):
    """
    Use logic to determine the set of locations I haven't visited yet.
    """
    result = set()
    for x in range(1, self.size + 1):
        for y in range(1, self.size + 1):
            if not logic_440.resolution(self.KB, logic.expr("L" + str(x) + "_" + str(y))):
                result.add((x,y))

    return result
Exemplo n.º 14
0
 def not_unsafe(self):
     roomlist = []
     unsafeList = []
     safeList = self.safe()
     for x in range(1, self.size + 1):
         for y in range(1, self.size + 1):
             roomlist.append((x, y))
             if ((x, y) not in safeList):
                 s = 'W' + str(x) + '_' + str(y) + ' | ' + 'P' + str(
                     x) + '_' + str(y)
                 if (logic_440.resolution(self.KB, logic.expr(s)) == True):
                     unsafeList.append((x, y))
     return set(roomlist) - set(unsafeList)
Exemplo n.º 15
0
 def test_background_knowledge(self):
     print Test
     agent = hw3.WumpusWorldAgent(4)
     agent.KB.tell(logic.expr('B1_1'))
     agent.KB.tell(logic.expr('~P1_2'))
     self.assertTrue(logic_440.resolution(agent.KB, logic.expr('P2_1')))
Exemplo n.º 16
0
 def test_background_knowledge(self):
   print Test
   agent = hw3.WumpusWorldAgent(4)
   agent.KB.tell(logic.expr('B1_1'))
   agent.KB.tell(logic.expr('~P1_2'))
   self.assertTrue(logic_440.resolution(agent.KB, logic.expr('P2_1')))