Advertisement
Guest User

Untitled

a guest
Nov 12th, 2019
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.11 KB | None | 0 0
  1. from random import randint
  2. from problem import Problem
  3.  
  4.  
  5. def p(x):
  6.     temp = []
  7.     while True:
  8.         n1 = data.pop()
  9.         if n1 == x:
  10.             return x
  11.         temp.append(n1)
  12.  
  13.     while 0 != len(temp):
  14.         data.append(temp.pop())
  15.  
  16.  
  17. class Problem3(Problem):
  18.  
  19.     def __init__(self):
  20.         statement = '3. Primiti o stiva. Operatii: \n'
  21.         statement += 'numar -> se inseaza numarul in stiva \n'
  22.         statement += 'P -> se extrage un numar din stiva si se afiseaza \n'
  23.         statement += 'Gasiti o succesiune de mutari a.i. introducand el. 1 2 3 4 5 in stiva (in aceasta ordine)'
  24.         statement += 'la final sa se afiseze 3 2 4 5 1.'
  25.         data = []
  26.         k = randint(3, 99)
  27.         for i in range(1, k):
  28.             k1 = randint(1, k)
  29.             data.append(k1)  # numar(k1) = data.append(k1);
  30.         super().__init__(statement, data)
  31.  
  32.     @property
  33.     def solve(self):
  34.         data = self.data
  35.         solution = '1. Problema 3 nu este rezolvata inca. Datele de intrare: ' + data + '\n'
  36.         solutie = []
  37.         i = 1
  38.         n = len(data)
  39.         if n % 2 == 0:
  40.             contor = e = int(n / 2) - 1
  41.         else:
  42.             contor = e = int(n / 2)
  43.         solution += 'Vom parcurge vectorul\n'
  44.         solution += 'Pentru prima jumatate vom pleca in ordinea descrescatoare si vom apela P(x) (fara primul)\n'
  45.         solution += 'De la a doua jumatate a vectorului se continua in ordinea normala si vom apela P(x) \n'
  46.         solution += 'Apoi vom apela P(0) pentru primul \n'
  47.         while i < n:
  48.             solutie.append(p(data[contor]))
  49.             solution += 'S-a eliminat din stiva numarul ' + str(data[contor]) + 'avand contorul = ' + str(contor)
  50.             solution += ' si i = ' + str(i) + '.\n'
  51.             if i < e:
  52.                 contor -= 1
  53.             i += 1
  54.         solution += 'S-a eliminat din stiva numarul ' + str(data[contor]) + 'avand contorul = ' + str(contor)
  55.         solution += ' si i = ' + str(i) + '.\n'
  56.         solutie.append(p(data[contor - 1]))
  57.         solution += 'Astfel rezultatul este: ' + str(solutie)
  58.         return solution
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement