Advertisement
Guest User

Untitled

a guest
Nov 14th, 2019
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.11 KB | None | 0 0
  1. from problem import Problem
  2. import random
  3. from random import randint
  4.  
  5. def numar(x,stack):
  6.      stack.append(x); #O(n)
  7.  
  8. def p(arr,stack):
  9.      arr.append(stack.pop()); #O(n)
  10.      
  11.  
  12.  
  13. class Problem3(Problem):
  14.     def __init__(self):
  15.         statement = '3. Primiti o stiva. Operatii: \n'
  16.         statement += 'numar -> se inseaza numarul in stiva \n'
  17.         statement += 'P -> se extrage un numar din stiva si se afiseaza \n'
  18.         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.'
  19.         statement += '\n\n\n'
  20.        
  21.         data=[];
  22.         n=randint(3,99);  
  23.         for i in range (1,n):
  24.           data.append(randint(1,99));
  25.         super().__init__(statement, data)
  26.        
  27.     def solve(self):
  28.           solution = 'Vom parcurge vectorul\n'
  29.           solution += 'Se va citi in ordine urmatoarele numere: \n'
  30.           n = len(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