Advertisement
Guest User

Untitled

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