Exemple #1
0
 def test_stack_size(self):
     stk = Stack()
     random_values = get_random_values()
     for i, v in enumerate(random_values):
         stk.push(v)
         self.assertEqual(stk.size(), i + 1)
     for i in range(len(random_values)):
         stk.pop()
         self.assertEqual(stk.size(), len(random_values) - i - 1)
def dec_to_bin(dec):
    s = Stack()
    while(dec>0):
        s.push(dec%2)
        dec // 2
    binary = 0

    for i in range(s.size()):
        num = s.pop()
        binary += num*(10**s.size())
    
    return binary
Exemple #3
0
 def test_stack_init(self):
     stk = Stack()
     self.assertEqual(stk.size(), 0)
     self.assertEqual(stk.is_empty(), True)
     with self.assertRaises(IndexError):
         stk.pop()
     with self.assertRaises(IndexError):
         stk.peek()
Exemple #4
0
 def test_stack_copy(self):
     stk = Stack()
     random_values = get_random_values()
     for v in random_values:
         stk.push(v)
     copied_stk = stk.copy()
     for v in random_values[::-1]:
         self.assertEqual(copied_stk.peek(), v)
         copied_stk.pop()
     self.assertEqual(stk.size(), len(random_values))
Exemple #5
0
 def test_stack_reversed(self):
     stk = Stack()
     random_values = get_random_values()
     for v in random_values:
         stk.push(v)
     reversed_stk = reversed(stk)
     for v in random_values:
         self.assertEqual(reversed_stk.peek(), v)
         reversed_stk.pop()
     self.assertEqual(stk.size(), len(random_values))
Exemple #6
0
def dec_to_bin(dec):
    binary = ''
    s = Stack()
    while dec != 0:
        tmp = dec % 2
        dec = dec // 2
        s.push(tmp)

    while s.size() != 0:
        a = s.pop()
        binary += str(a)
    return binary
Exemple #7
0
    def test_stack_reversed_with_override(self):
        self.assertEqual(list(reversed([123, 456])), [456, 123])

        stk = Stack()
        random_values = get_random_values()
        for v in random_values:
            stk.push(v)
        reversed_stk = reversed(stk)
        for v in random_values:
            self.assertEqual(reversed_stk.peek(), v)
            reversed_stk.pop()
        self.assertEqual(stk.size(), len(random_values))

        self.assertEqual(list(reversed([123, 456])), [456, 123])
def dec_to_bin(dec):
    s = Stack()
    n = dec
    if n == 0:
        s.push(n % 2)
        n = n // 2

    while n > 0:
        s.push(n % 2)
        n = n // 2
    number = s.size()
    binary = ''
    for i in range(number):
        binary = binary + str(s.pop())
    return binary
def dec_to_bin2(dec):
    s = Stack()
    i = 0
    for j in range(10000):
        if(dec // (2**j) == 0):
            i = j
            break
    binary = 0
    for k in range(i):
        k = i - k
        if(dec % (2 ** k) // (2 ** (k-1)) == 1):
            s.push(1)
        else:
            s.push(0)
    for l in range(s.size()):
        binary += s.pop() * (10 ** l)
    return binary
def base_converter(dec_number, base):
    digits = "0123456789ABCDEF"
    s = Stack()
    n = dec_number
    while n > 0:
        number = n % base
        if number > 9:
            s.push(digits[number])
        else:
            s.push(n % base)
        n = n // base
    number = s.size()
    string = ''
    for i in range(number):
        string = string + str(s.pop())

    return string
Exemple #11
0
def base_converter(dec, base):
    binary = ''
    s = Stack()

    while dec != 0:
        if base > 16 or base < 2:  #若base輸入值不符合範圍,輸出error
            return "error"

        tmp = dec % base
        dec = dec // base

        if tmp >= 10:
            d = tmp % 10
            tmp = chr(65 + d)
        s.push(tmp)

    while s.size() != 0:
        a = s.pop()
        binary += str(a)
    return binary