# program 1
stg = input('enter a string ')
stack = []
print('input', stg)
for i in stg:
stack.append(i)
reverse = ''
while stack:
reverse = reverse + stack.pop()
print('reverse', reverse)
# program 2
def two_sum(nums, target):
num_ordered = sorted(nums)
low = 0
high = len(num_ordered) - 1
while low < high:
if num_ordered[low] + num_ordered[high] == target:
return [low, high]
elif num_ordered[low] + num_ordered[high] > target:
high -= 1
else:
low += 1
return []
nums = [7, 1, 5, 3, 6, 4]
target = 9
print(two_sum(nums, target))
# program 3
def two_sum(nums, target):
found = []
for i in range(len(nums)):
for j in range(1, len(nums)):
if nums[i] + nums[j] == target:
found.append(i)
found.append(j)
return found
nums = [2, 7, 11, 15]
target = 37
print(two_sum(nums, target))
# program 4
class Queue:
def __init__(self):
self.items = []
def is_empty(self):
return self.items == []
def is_full(self):
return self.items == len(self._items)
def enqueue(self, item) -> None:
self.items.insert(0, item)
def dequeue(self):
assert not self.is_empty(), 'cannot dequeue from an empty queue'
return self.items.pop()
def size(self):
return len(self.items)
queue1 = Queue()
print('is empty', queue1.is_empty())
print('size', queue1.size())
print('dequeue', queue1.dequeue())
queue1.enqueue(12)
queue1.enqueue(87)
queue1.enqueue('Hello')
print('size after enqueue', queue1.size())
print('dequeue', queue1.dequeue())