Advertisement
Guest User

Untitled

a guest
Nov 22nd, 2019
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.16 KB | None | 0 0
  1. from problem import Problem
  2. import random
  3. from collections import deque
  4.  
  5.  
  6.  
  7. class Tema1(Problem):
  8. def __init__(self):
  9. A = range(3)
  10. sum = 3
  11. v = [random.choice(A) for _ in range(sum)]
  12. data1 = ["Mama", "Tata", "Mihai"]
  13. data2 = ["merge", "alearga", "fuge"]
  14. data3 = ["acasa", "repede", "mult"]
  15. statement = 'Aveti la dispozitie 3 SD: \n'
  16. statement += '1 -> stiva\n'
  17. statement += '2 -> coada\n'
  18. statement += '3 -> stiva\n'
  19. statement += 'Operatii:\n'
  20. statement += 'caracter -> se introduce caracterul in prima stiva\n'
  21. statement += '1 -> se scoate din structura 1 se introduce in structura 2\n'
  22. statement += '2 -> se scoate din structura 2 se introduce in structura 3\n'
  23. statement += '3 -> se scoate din structura 3 se introduce in structura 1\n'
  24. statement += 'Scrieti un sir de operatii pentru a avea la sf.\n'
  25. statement += '1 -> ' + data1
  26. statement += '\n2 -> ' + data2
  27. statement += '\n3 -> ' + data3
  28. data = data1 + ' ' + data2 + ' ' + data3
  29. super().__init__(statement, data)
  30. def solve(self):
  31. # implementare stiva
  32. class Stack:
  33. def __init__(self):
  34. self.items = []
  35. self.v = []
  36.  
  37. def isEmpty(self):
  38. return self.items == []
  39.  
  40. def push(self, item):
  41. self.items.append(item)
  42.  
  43. def pop(self):
  44. return self.items.pop()
  45.  
  46. def peek(self):
  47. return self.items[len(self.items) - 1]
  48.  
  49. def size(self):
  50. return len(self.items)
  51.  
  52. def show(self):
  53. print(self.items)
  54.  
  55. def afisare(self):
  56. v = []
  57. while self.isEmpty() == False:
  58. x = self.pop()
  59. v.append(x)
  60. x = len(v)-1
  61. while x>=0:
  62. self.push(v[x])
  63. x = x-1
  64. self.v = list(reversed(v))
  65.  
  66. stack1 = Stack()
  67. stack2 = Stack()
  68.  
  69. # implementare coada
  70. class Node(object):
  71.  
  72. def __init__(self, item=None):
  73. self.item = item
  74. self.next = None
  75. self.previous = None
  76.  
  77. class Queue(object):
  78.  
  79. def __init__(self):
  80. self.size = 0
  81. self.front = None
  82. self.rear = None
  83. self.v = []
  84.  
  85. def isEmpty(self):
  86. return self.size == 0
  87.  
  88. def Push(self, x):
  89. newNode = Node(x)
  90. if self.isEmpty():
  91. self.front = self.rear = newNode
  92. else:
  93. self.rear.next = newNode
  94. newNode.previous = self.rear
  95. self.rear = newNode
  96. self.size += 1
  97.  
  98. def Pop(self):
  99. item = self.front.item
  100. self.front = self.front.next
  101. self.size -= 1
  102. if self.isEmpty():
  103. self.rear = None
  104. return item
  105.  
  106. def q_front(self):
  107. if self.isEmpty():
  108. return None
  109. return self.front.item
  110.  
  111. def q_rear(self):
  112. if self.isEmpty():
  113. return None
  114. return self.rear.item
  115.  
  116. def afisare(self):
  117. v = []
  118. while self.isEmpty() == False:
  119. x = self.Pop()
  120. v.append(x)
  121. for x in v:
  122. self.Push(x)
  123.  
  124. self.v = v
  125.  
  126. queue = Queue()
  127. s = self.data
  128. solutie = '\nInitial propozitia este: ' + '"' + str(s) + '"'
  129. s = s.split(" ")
  130. solutie += '\nSe imparte propozitia in cuvinte intr-un vector.'
  131. solutie += '\nAstfel vectorul devine: ' + str(s)
  132.  
  133.  
  134. if len(s) != 3:
  135. print("Nu sunt 3 cuvinte\n")
  136.  
  137. else:
  138. solutie += '\nIntroducem primul cuvant in stiva 1 astfel:\n'
  139.  
  140. a = list(s[0])
  141.  
  142. for x in a:
  143. stack1.push(x)
  144.  
  145. stack1.afisare()
  146. solutie += '\n\t\t\t\tStiva 1: ' + ' ' + str(stack1.v) + '\n'
  147.  
  148. a = list(s[2])
  149. solutie += '\nVrem sa introducem in stiva 1 cel de-al treilea cuvant (pe litere), apoi il introducem in coada, apoi in stiva 2.'
  150.  
  151.  
  152. for x in a:
  153. stack1.push(x)
  154.  
  155. stack1.afisare()
  156. solutie += '\n\t\t\t\tStiva 1 : ' + ' ' + str(stack1.v)
  157. var = stack1.pop()
  158. var1 = '\u0336' + var
  159. stack1.push(var1)
  160. queue.Push(var1)
  161. stack2.push(var)
  162.  
  163.  
  164. stack2.afisare()
  165. queue.afisare()
  166. solutie += '\n\t\t\t\tCoada: ' + str(queue.v)
  167. solutie += '\n\t\t\t\tStiva 2: ' + str(stack2.v) + '\n'
  168.  
  169.  
  170.  
  171. a = list(s[1])
  172. solutie += '\n\nVrem sa introducem in stiva 1 cel de-al doilea cuvant (pe litere), apoi il introducem in coada:\n'
  173.  
  174. for x in a:
  175. stack1.push(x)
  176.  
  177. stack1.afisare()
  178. solutie += '\n\t\t\t\tStiva 1: ' + str(stack1.v)
  179. var = stack1.pop()
  180. var1 = '\u0336' + var
  181. stack1.push(var1)
  182. queue.Push(var)
  183.  
  184.  
  185. queue.afisare()
  186. stack1.afisare()
  187. solutie += '\n\t\t\t\tStiva 1: ' + str(stack1.v)
  188. solutie += '\n\t\t\t\tCoada: ' + str(queue.v) + '\n'
  189. solutie += 'La final:\n'
  190.  
  191. stack1.afisare()
  192. solutie += "Elementele stivei 1 sunt:\n" + str(stack1.v)
  193. queue.afisare()
  194. solutie += "\nElementele cozii sunt:\n" + str(queue.v)
  195. stack2.afisare()
  196. solutie += "\nElementele stivei 2 sunt:\n" + str(stack2.v)
  197. return solutie
  198.  
  199.  
  200. p = Tema1()
  201. print(p.statement)
  202. print(p.solve())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement