Beispiel #1
0
    def find_new_room(self):
        """
        Return a list containing the shortest path from
        starting room to unknown room in
        breadth-first order.
        """

        # # initialize queue with starting vertex
        q = Queue()
        q.enqueue((self.seen[str(self.current_room['room_id'])], []))

        # # set to keep track of vertexes already seen
        visited = set()

        # # while queue is not empty
        while q.len() > 0:
            # get path and vertex
            room, path = q.dequeue()

            # if room contains directions that have not been seen,
            # append direction and return path
            for direction, next_room in room['exits'].items():
                if next_room == '?':
                    path.append(direction)
                    return path
            # else, add room_id to visited
            if room['room_id'] not in visited:
                visited.add(room['room_id'])
                # and add paths to the queue for each exit
                for direction, next_room in room['exits'].items():
                    path_copy = path.copy()
                    path_copy.append(direction)
                    q.enqueue((self.seen[str(next_room)], path_copy))

        raise ValueError('Room not found')
Beispiel #2
0
    def find_nearest_unexplored(self, explored):
        """
        Return a list containing the shortest path from
        starting room to unexplored room in
        breadth-first order.
        """

        # initialize queue with starting vertex
        q = Queue()
        q.enqueue((self.seen[str(self.current_room['room_id'])], []))

        # while queue is not empty
        while q.len() > 0:
            # get path and vertex
            room, path = q.dequeue()

            # if unexplored room, return path
            if room['room_id'] in explored:
                return path

            # else, add room_id to explored
            else:
                explored.add(room['room_id'])
                # and add paths to the queue for each exit
                for direction, next_room in room['exits'].items():
                    path_copy = path.copy()
                    path_copy.append(direction)
                    q.enqueue((self.seen[str(next_room)], path_copy))

        raise ValueError('No more rooms to explore')
    def bft_print(self, node):
        # queue = []

        # if node:
        #     queue.append(node)

        # while len(queue) > 0:
        #     print('val', queue[0].value)
        #     current_node = queue[0]

        #     if current_node.left_child:
        #         queue.append(current_node.left_child)

        #     if current_node.right_child:
        #         queue.append(current_node.right_child)

        #     queue.pop(0)
        queue = Queue()
        queue.enqueue(node)
        while queue.len():
            current_node = queue.dequeue()
            print(current_node.value)

            if current_node.left:
                queue.enqueue(current_node.left)

            if current_node.right:
                queue.enqueue(current_node.right)
Beispiel #4
0
    def find_room_by_id(self, id):
        """
        Return a list containing the shortest path from
        starting room to room with matching id in
        breadth-first order.
        """

        # # initialize queue with starting vertex
        q = Queue()
        q.enqueue((self.seen[str(self.current_room['room_id'])], []))

        # # set to keep track of vertexes already seen
        visited = set()

        # # while queue is not empty
        while q.len() > 0:
            # get path and vertex
            room, path = q.dequeue()

            # if room title matches, return path
            if room['room_id'] == id:
                return path

            # else, add room_id to visited
            if room['room_id'] not in visited:
                visited.add(room['room_id'])
                # and add paths to the queue for each exit
                for direction, next_room in room['exits'].items():
                    path_copy = path.copy()
                    path_copy.append(direction)
                    q.enqueue((self.seen[str(next_room)], path_copy))

        raise ValueError('Room not found')
Beispiel #5
0
    def bft_print(self, node):

        #So to print every value in bredth
        #we use as a queue as we call a node
        #we put the child nodes at the back of the queue
        #this enforces calling all nodes of one level before the next level of nodes are called

        q = Queue()
        #enqueue adds a value to the back of the line.
        #to start the function we put the node passed in at the back/front of the queue
        q.enqueue(node)

        #now, while the queue is not empty...
        while q.len() > 0:
            #we take the node at the front of the queue
            #and set it to current node
            current_node = q.dequeue()
            #print its value
            print(current_node.value)
            #if there is a node to the left, add it to the queu
            if current_node.left:
                q.enqueue(current_node.left)
            #same for right
            if current_node.right:
                q.enqueue(current_node.right)
    def bft_print(self, node):
        # Initialize a queue
        queue = Queue()

        # Push root to queue
        queue.enqueue(node)

        # While stack not empty
        while queue.len() > 0:

            # Pop item out of queue into temp
            current_node = queue.dequeue()

            # If temp has right, put into queue
            if current_node.right:

                # Ram it through method again
                queue.enqueue(current_node.right)

            # If temp has left, put into queue
            if current_node.left:

                # Ram it through method again
                queue.enqueue(current_node.left)

            # Print
            print(current_node.value)
    def bft_print(self, node):
        # Check if this node is not empty
        if node:
            # Create a queue
            my_queue = Queue()
            # enqueue node
            my_queue.enqueue(node)

            # While the length of my_queue is not 0
            while my_queue.len() != 0:
                # save the last node in the queue in popped_node
                # dequeue this last node from the queue
                dequeued_node = my_queue.dequeue()
                # print the value of popped_node
                print(dequeued_node.value)

                # If popped_node.left is not empty
                if dequeued_node.left:
                    # Enqueue popped_node.left to the queue
                    my_queue.enqueue(dequeued_node.left)

                # If popped_node.right is not empty
                if dequeued_node.right:
                    # Enqueue popped_node.right to the queue
                    my_queue.enqueue(dequeued_node.right)
Beispiel #8
0
    def bft_print(self, node):
        #PLAN
        #create/initialize queue
        #add root to queue
        #while queue is not empty
        #pop head/top item out of queue & into temp variable  [node = pop head of queue]
        #if temp exists
        # if there is temp var on the right
        #put that into the queue on the right
        # if there is a left temp var
        #put that into the queue on the left
        # DO the THING!... print temp value
        # else break

        queue = Queue()
        queue.enqueue(node)
        while queue.len() != 0:
            temp: BinarySearchTree = queue.dequeue()
            if temp:
                if temp.right:
                    queue.enqueue(temp.right)
                if temp.left:
                    queue.enqueue(temp.left)
                print(temp.value)

            else:
                break
Beispiel #9
0
 def bft_print(self, node):
     to_print = Queue()
     to_print.enqueue(node)
     while to_print.len() > 0:
         dequeued_node = to_print.dequeue()
         print(dequeued_node.value)
         dequeued_node.left and to_print.enqueue(dequeued_node.left)
         dequeued_node.right and to_print.enqueue(dequeued_node.right)
Beispiel #10
0
 def bft_print(self, node):
   q = Queue()
   q.enqueue(node)
   while q.len() > 0:
     current = q.dequeue()
     print(current.value)
     current.left and q.enqueue(current.left)
     current.right and q.enqueue(current.right)
 def bft_print(self, node=None):
     q = Queue()
     q.enqueue(self)
     while q.len() > 0:
         node_current = q.dequeue()
         print(node_current.value)
         if node_current.left:
             q.enqueue(node_current.left)
         if node_current.right:
             q.enqueue(node_current.right)
 def bft_print(self, node):
     q = Queue()
     q.enqueue(node)
     while q.len() > 0:
         temp = q.dequeue()
         print(temp)
         if temp.left:
             q.enqueue(temp.left)
         if temp.right:
             q.enqueue(temp.right)
Beispiel #13
0
 def bft_print(self, node):
     q = Queue()
     q.enqueue(node)
     while q.len() > 0:
         current_pop = q.dequeue()
         print(current_pop.value)
         if current_pop.left:
             q.enqueue(current_pop.left)
         if current_pop.right:
             q.enqueue(current_pop.right)
 def bft_print(self, node):
     storage = Queue()
     storage.enqueue(self)
     while storage.len():
         current_node = storage.dequeue()
         print(current_node.value)
         if current_node.left:
             storage.enqueue(current_node.left)
         if current_node.right:
             storage.enqueue(current_node.right)
 def bft_print(self, node):
     queue = Queue()
     queue.enqueue(node)
     while queue.len() > 0:
         head = queue.dequeue()
         print(head.value)
         if current_node.left is not None:
             queue.enqueue(head.left)
         if current_node.right is not None:
             queue.enqueue(head.right)
 def bft_print(self, node):
     queue = Queue()
     queue.enqueue(node)
     while queue.len() > 0:
         current = queue.dequeue()
         print(current.value)
         if current.left:
             queue.enqueue(current.left)
         if current.right:
             queue.enqueue(current.right)
 def bft_print(self, node):
     q = Queue()
     q.enqueue(self)
     while q.len() > 0:
         current_node = q.dequeue()
         if current_node.left:
             q.enqueue(current_node.left)
         if current_node.right:
             q.enqueue(current_node.right)
         print(current_node.value)
 def bft_print(self, node):
     q = Queue()
     q.enqueue(node)
     while q.len() > 0:
         t = q.dequeue()
         print(t.value)
         if t.left:
             q.enqueue(t.left)
         if t.right:
             q.enqueue(t.right)
Beispiel #19
0
 def bft_print(self, node):
     queue = Queue()
     queue.enqueue(node)
     while queue.len() > 0:
         temp = queue.dequeue()
         print(temp.value)
         if temp.left:
             queue.enqueue(temp.left)
         if temp.right:
             queue.enqueue(temp.right)
 def bft_print(self, node):
     queue = Queue()
     queue.enqueue(node)
     while queue.len() > 0:
         root = queue.dequeue()
         print(root.value)
         if root.left != None:
             queue.enqueue(root.left)
         if root.right != None:
             queue.enqueue(root.right)
 def bft_print(self, node):
     q = Queue()
     q.enqueue(self)
     while q.len() != 0:
         node = q.dequeue()
         print(node.value)
         if node.left:
             q.enqueue(node.left)
         if node.right:
             q.enqueue(node.right)
 def bft_print(self, node):
     queue = Queue()
     queue.enqueue(self)
     while queue.len() > 0:
         node = queue.dequeue()
         print(node.value)
         if node.left:
             queue.enqueue(node.left)
         if node.right:
             queue.enqueue(node.right)
Beispiel #23
0
    def bft_print(self, node):
        q = Queue()
        q.enqueue(starting_node)

        while q.len() > 0:
            current = q.dequeue()
            print(current.value)
            if current.left:
                q.enqueue(current.left)
            if current.right:
                q.enqueue(current.right)
 def bft_print(self, node):
     queue = Queue()
     queue.enqueue(node)
     
     while queue.len():
         item = queue.dequeue()
         print(item.value)
         if item.left:
             queue.enqueue(item.left)
         if item.right:
             queue.enqueue(item.right)
 def bft_print(self, node):
     queue = Queue()
     queue.enqueue(node)
     while queue.len():
         current_node = queue.dequeue()  # pop left
         print(current_node.value)  # d
         if current_node.left:
             queue.enqueue(current_node.left)  # l
         if current_node.right:
             queue.enqueue(current_node.right)  # r
     """
Beispiel #26
0
    def for_each(self, cb):
        current_node = self
        queue = Queue()
        queue.enqueue(current_node)
        while queue.len() > 0:
          current_node = queue.dequeue()

          cb(current_node.value)
          for item in [current_node.left, current_node.right]:
            if item is not None:
              queue.enqueue(item)
Beispiel #27
0
    def bft_print(self, node):
        q = Queue()
        q.enqueue(node)

        while q.len() > 0:
            dq = q.dequeue()
            print(dq.value)
            if dq.left is not None:
                q.enqueue(dq.left)
            if dq.right is not None:
                q.enqueue(dq.right)
Beispiel #28
0
    def bft_print(self, node):
        current_node = node
        queue = Queue()
        queue.enqueue(current_node)
        while queue.len() > 0:
          current_node = queue.dequeue()

          print(current_node.value)
          for item in [current_node.left, current_node.right]:
            if item is not None:
              queue.enqueue(item)
Beispiel #29
0
    def bft_print(self, node):
        queue_storage = Queue()
        queue_storage.enqueue(node)

        while queue_storage.len() > 0:
            curr_node = queue_storage.dequeue()
            print(curr_node.value)
            if curr_node.left:
                queue_storage.enqueue(curr_node.left)
            if curr_node.right:
                queue_storage.enqueue(curr_node.right)
Beispiel #30
0
 def bft_print(self, node):
     storage = Queue()
     while True:
         if node == None and storage.len() == 0:
             break
         elif node == None:
             node = storage.dequeue()
         else:
             print(node.value)
             storage.enqueue(node.left)
             storage.enqueue(node.right)
             node = storage.dequeue()