In: Computer Science
# ArrayStack
# TODO: 
push and pop using array stack with doubling technique.
import numpy as np
from future import print_function
# Definisi class ArrayStack
class ArrayStack(object):
        def __init__(self):
                self.data = np.zeros(20, dtype=np.int)
                self.count = 0
                
        def isEmpty(self):
                pass # ubah saya
                
        def size(self):
                pass # ubah saya
                
        def push(self, obj):
                pass # ubah saya
                
        def pop(self):
                pass # ubah saya
                
#--------------------------
# End of class
if __name__ == "__main__":
        stack = ArrayStack()
        randn = np.random.permutation(1000)
        for i in range(1000):
                stack.push(randn[i])
        ####
        for i in range(100):
                print(stack.pop())
        ####
import numpy as np
# from future import print_function
# Definisi class ArrayStack
class ArrayStack(object):
    def __init__(self):
        self.data = np.zeros(20, dtype=np.int)
        self.count = 0
    def isEmpty(self):
        return self.count == 0
    def size(self):
        return self.count
    def push(self, obj):
        if self.count == len(self.data):
            newData = np.zeros(2 * self.count, dtype=np.int)
            for i in range(len(self.data)):
                self.data[i] = newData[i]
            self.data = newData
        self.data.put(self.count, obj)
        self.count += 1
    def pop(self):
        elem = self.data[self.count - 1]
        np.delete(self.data, self.count - 1)
        self.count -= 1
        return elem
# --------------------------
# End of class
if __name__ == "__main__":
    stack = ArrayStack()
    randn = np.random.permutation(1000)
    for i in range(1000):
        stack.push(randn[i])
    ####
    for i in range(100):
        print(stack.pop())
    ####