def get_num(arr, num):
    if arr is None or len(arr) == 0:
        return

    qmin = Queue()
    qmax = Queue()
    start = 0
    end = 0
    res = 0
    length = len(arr)
    while start < length:
        while end < length:
            while (not qmax.is_empty()) and arr[qmax.peek()] <= arr[end]:
                qmax.poll()
            qmax.add(end)
            while (not qmin.is_empty()) and arr[qmin.peek()] >= arr[end]:
                qmin.poll()
            qmin.add(end)
            if arr[qmax.peek()] - arr[qmin.peek()] > num:
                break
            end += 1
        print(start, end - 1)
        res += end - start
        if qmax.peek() == start:
            qmax.poll()
        if qmin.peek() == start:
            qmin.poll()
        start += 1
    return res
Exemple #2
0
class TestQueue(unittest.TestCase):
    def setUp(self):
        self.queue = Queue()

    def enqueue_test_values(self):
        self.queue.enqueue(1)
        self.queue.enqueue(2)
        self.queue.enqueue(3)

    def test_initializer(self):
        self.assertEqual(self.queue.linked_list.node_count, 0)

    def test_enqueue(self):
        self.enqueue_test_values()
        self.assertEqual(self.queue.linked_list.node_count, 3)

    def test_dequeue(self):
        self.enqueue_test_values()
        self.assertEqual(self.queue.dequeue().value, 1)
        self.assertEqual(self.queue.dequeue().value, 2)
        self.assertEqual(self.queue.dequeue().value, 3)

    def test_node_at_index(self):
        self.enqueue_test_values()
        self.assertEqual(self.queue.linked_list.node_at_index(1).value, 2)

    def test_is_empty(self):
        self.assertTrue(self.queue.is_empty())
        self.enqueue_test_values()
        self.assertFalse(self.queue.is_empty())
Exemple #3
0
def simulation():
    person_queue = Queue()
    for i in xrange(10):
        person_queue.enqueue(Person(0))

    waiting_list = []

    elevators = []
    for i in xrange(6):
        elevators.append(Elevator())

    def new_comer(time):
        # every seconds comes 1 to 5 person
        for i in xrange(random.randint(1, 6)):
            person_queue.enqueue(Person(time))

    for sec in xrange(3600):
        new_comer(sec)
        for e in elevators:
            if e.is_available() and not person_queue.is_empty():
                e.take(person_queue, sec, waiting_list)

            e.tick()
    print "Average waiting time on 1st floor: %f" % \
        (sum(waiting_list) / float(len(waiting_list)))
def simulation():
    person_queue = Queue()
    for i in xrange(10):
        person_queue.enqueue(Person(0))

    waiting_list = []

    elevators = []
    for i in xrange(6):
        elevators.append(Elevator())

    def new_comer(time):
        # every seconds comes 1 to 5 person
        for i in xrange(random.randint(1, 6)):
            person_queue.enqueue(Person(time))

    for sec in xrange(3600):
        new_comer(sec)
        for e in elevators:
            if e.is_available() and not person_queue.is_empty():
                e.take(person_queue, sec, waiting_list)

            e.tick()
    print "Average waiting time on 1st floor: %f" % \
        (sum(waiting_list) / float(len(waiting_list)))
    def test_queue(self):
        queue = Queue()
        self.assertEqual(queue.is_empty(), True)
        self.assertEqual(queue.peek(), None)

        queue.queue("first_in_line")
        self.assertEqual(queue.peek(), "first_in_line")
        self.assertEqual(queue.is_empty(), False)

        queue.queue("second_in_line")
        self.assertEqual(queue.de_queue(), "first_in_line")
        self.assertEqual(queue.peek(), "second_in_line")

        self.assertEqual(queue.de_queue(), "second_in_line")
        self.assertEqual(queue.is_empty(), True)
        self.assertEqual(queue.peek(), None)
Exemple #6
0
    def test_queue(self):
        q = Queue()
        self.assertEqual(True, q.is_empty())
        self.assertEqual(0, q.size())

        q.enqueue(1)
        self.assertEqual(False, q.is_empty())
        self.assertEqual(1, q.size())

        q.enqueue(True)
        q.enqueue("Hello, World")
        self.assertEqual(3, q.size())

        self.assertEqual(1, q.dequeue())
        self.assertEqual(True, q.dequeue())
        self.assertEqual(1, q.size())

        q.dequeue()
        self.assertEqual(True, q.is_empty())
Exemple #7
0
    def test_queue(self):
        q = Queue()
        self.assertEqual(True, q.is_empty())
        self.assertEqual(0, q.size())

        q.enqueue(1)
        self.assertEqual(False, q.is_empty())
        self.assertEqual(1, q.size())

        q.enqueue(True)
        q.enqueue("Hello, World")
        self.assertEqual(3, q.size())

        self.assertEqual(1, q.dequeue())
        self.assertEqual(True, q.dequeue())
        self.assertEqual(1, q.size())

        q.dequeue()
        self.assertEqual(True, q.is_empty())
 def traversal_level_order(self):
     # o(n) for time
     # o(n) for space
     if self.root is None:
         return
     node_queue = Queue()
     node_queue.queue(self.root)
     value = []
     while not node_queue.is_empty():
         current_node = node_queue.de_queue()
         value.append(current_node.value)
         if current_node.left is not None:
             node_queue.queue(current_node.left)
         if current_node.right is not None:
             node_queue.queue(current_node.right)
     return value
Exemple #9
0
def simulation(numSeconds, pagesPerMinute):

    labprinter = Printer(pagesPerMinute)
    printQueue = Queue()
    waitingtimes = []

    for currentSecond in range(numSeconds):

        if newPrintTask():
            task = Task(currentSecond)
            printQueue.enqueue(task)

        if (not labprinter.busy()) and (not printQueue.is_empty()):
            nexttask = printQueue.dequeue()
            waitingtimes.append(nexttask.waitTime(currentSecond))
            labprinter.startNext(nexttask)

        labprinter.tick()

    averageWait = sum(waitingtimes) / len(waitingtimes)
    print("Finished tasks %3d  Average Wait %6.2f secs %3d tasks remaining." %
          (len(waitingtimes), averageWait, printQueue.size()))