Advertisement
Guest User

Untitled

a guest
Nov 14th, 2019
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.12 KB | None | 0 0
  1. from problem import Problem
  2. from random import randint
  3.  
  4. def numar(x,stack):
  5.      stack.append(x); #O(n)
  6.  
  7. def p(arr,stack):
  8.      arr.append(stack.pop()); #O(n)
  9.      
  10.  
  11.  
  12. class Problem3(Problem):
  13.     def __init__(self):
  14.         statement = '3. Primiti o stiva. Operatii: \n'
  15.         statement += 'numar -> se inseaza numarul in stiva \n'
  16.         statement += 'P -> se extrage un numar din stiva si se afiseaza \n'
  17.         statement += 'Gasiti o succesiune de mutari a.i. introducand el. 1 2 3 4 5 in stiva (in aceasta ordine) la final sa se afiseze 3 2 4 5 1.'
  18.         statement += '\n\n\n'
  19.        
  20.         data=[];
  21.         n=randint(3,99);  
  22.         for i in range (1,n):
  23.           data.append(randint(1,99));
  24.         super().__init__(statement, data)
  25.        
  26.     def solve(self):
  27.           solution = 'Vom parcurge vectorul\n'
  28.           solution += 'Se va citi in ordine urmatoarele numere: \n'
  29.           n = len(data);    
  30.           print(data);    
  31.           stack = [];
  32.           arr = [];
  33.           ok = 0; #ok := verifica daca s-a citit pana la prima jumatate
  34.           i = 0;
  35.           contor = 1;
  36.           n = n-1;
  37.           if n <= 3:
  38.                k=radint(1,3);
  39.           else:
  40.                k=radint(int(n/2),n-3);
  41.           while i <= n: #O(n^2)
  42.                       if i <= k:
  43.                             if ok == 0:
  44.                                    e = data[i]
  45.                                    numar(e,stack)
  46.                                    solution +='S-a introdus in stiva numarul ' + str(e) + ' lungimea fiind ' + str(len(stack)) + '\n'
  47.                                    if i == k:
  48.                                               ok = 1;
  49.                                               i = 1;
  50.                                    else:
  51.                                         i = i + 1;
  52.                                         contor += 1;
  53.                                        
  54.                             elif contor != 1:
  55.                                     solution += 'Se va elimina din stiva numarul ' + str(data[contor-1]) + '\n'
  56.                                     p(arr,stack);
  57.                                     i = i + 1;
  58.                                     contor -= 1
  59.                             if ok == 1 & contor == 1:
  60.                                     contor = k + 1;
  61.                                    
  62.                       else:
  63.                             if contor == n:
  64.                                 break;
  65.                             e = data[contor];
  66.                             numar(e,stack);
  67.                             solution +='S-a introdus in stiva numarul ' + str(e) + '\n'
  68.                             solution += 'Se va elimina din stiva numarul ' + str(data[contor-1]) + '\n'
  69.                             p(arr,stack);
  70.                             contor = contor + 1;
  71.                             i = i + 1;
  72.                                
  73.           solution += 'Se va elimina din stiva numarul ' + str(stack[0]) + '\n'  
  74.           p(arr,stack);
  75.          
  76.           solution += 'Rezultatul final este : ' + str(arr) + '\n'
  77.           return solution
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement