Ejemplo n.º 1
0
def balance_parenthesis(bracket):
    solution_stack = Stack()
    open_brace = "{(["
    for paren in bracket:
        if paren in open_brace:
            solution_stack.add_item(paren)
        else:
            if solution_stack.is_empty() or not is_match(
                    solution_stack.remove_item(), paren):
                return False
    if solution_stack.is_empty():
        return True
    else:
        return False
Ejemplo n.º 2
0
class TestStack(unittest.TestCase):
    def test_flow(self):
        self.test_stack = Stack()

        self.test_stack.add_item(10)
        self.test_stack.add_item(20)
        self.test_stack.add_item(22, 33)
        assert self.test_stack.pop_item() == 33
        assert self.test_stack.pop_item() == 22

        assert self.test_stack.count_items() == 2

        while self.test_stack.pop_item():
            pass

        assert self.test_stack.count_items() == 0
Ejemplo n.º 3
0
class TwoStackQueue:
    def __init__(self):
        self._old_on_top_stack = Stack()
        self._new_on_top_stack = Stack()
        self._zeros = 0

    def queue(self, value):
        new_node = Node(value)
        self._new_on_top_stack.add_item(new_node)

    def peek(self):
        self.check_empty()
        return self._old_on_top_stack.peek()

    def dequeue(self):
        self.check_empty()
        return self._old_on_top_stack.remove_item()

    def check_empty(self):
        if self._old_on_top_stack.is_empty():
            while not self._new_on_top_stack.is_empty():
                self._old_on_top_stack.add_item(
                    self._new_on_top_stack.remove_item())
from processor import Processor
from queue import Queue
from task import Task
from stack import Stack

if __name__ == "__main__":
    proc = Processor()
    task_queue = Queue()
    task_stack = Stack()
    while True:
        a = Task()
        task_queue.add_task(a)
        if proc.idle_proc():
            if not task_queue.get_queue_empty_flag():
                proc.add_task(task_queue.del_task())
            elif not task_stack.check_is_empty():
                proc.add_task(task_stack.del_item())
        else:
            if not task_queue.get_queue_empty_flag():
                task_stack.add_item(task_queue.del_task())
        print(proc)
        print(task_stack)
        print(task_queue)
        proc.work()