0415 - unique: Difference between revisions

From Bitnami MediaWiki
No edit summary
No edit summary
 
Line 43: Line 43:




def conform_restrictiilor():
def conform_restrictiilor(vector):
    vector = list(map(int, input().split()))
     for x in vector:
     for x in vector:
         if x > 200000:
         if x > 200000:
             print("Datele nu sunt comform restricțiilor impuse.")
             print("Datele nu sunt comform restricțiilor impuse.")
             exit()
             return False
     if len(vector) > 1000000 or len(vector) == 0:
     if len(vector) > 1000000 or len(vector) == 0:
         print("Datele nu sunt comform restricțiilor impuse.")
         print("Datele nu sunt comform restricțiilor impuse.")
         exit()
         return False
     print("Datele sunt corecte.")
     print("Datele sunt corecte.")
     return vector
     return True




if __name__ == '__main__':
if __name__ == '__main__':
     vector = conform_restrictiilor()
     vector = list(map(int, input().split()))
    numarare_elemente(vector)
    if conform_restrictiilor(vector) is True:
        numarare_elemente(vector)




Line 70: Line 70:




Acest cod constă în două funcții separate. Funcția '''conform_restrictiilor()''' primește datele de intrare sub formă de '''vector''' și verifică dacă acestea respectă anumite restricții, adică dacă toate valorile din '''vector''' sunt mai mici sau egale cu 200000 și dacă lungimea vectorului este între 1 și 1000000. Dacă aceste restricții nu sunt respectate, se afișează un mesaj de eroare și se iese din program. Dacă datele sunt valide, funcția returnează vectorul.
Funcția '''numarare_elemente''' primește un vector ca argument și calculează numărul de elemente unice din '''vector'''. Variabila '''numar_unice''' inițializată la zero este incrementată de fiecare dată când este găsit un element unic în vector.


Funcția '''numarare_elemente(vector)''' primește vectorul returnat de funcția '''conform_restrictiilor()''' și calculează numărul de elemente unice din vector. Mai precis, funcția initializează un contor la zero și parcurge vectorul. Pentru fiecare element din vector, funcția verifică dacă numărul de apariții al elementului în vector este egal cu 1. Dacă da, atunci acesta este un element unic și contorul este incrementat. La final, funcția afișează numărul de elemente unice găsite.
Funcția '''conform_restrictiilor''' primește, de asemenea, un vector ca argument și verifică dacă datele din vector îndeplinesc anumite restricții. Mai precis, verifică dacă fiecare element din '''vector''' este mai mic sau egal cu 200000 și dacă lungimea vectorului este mai mică sau egală cu 1000000 și diferită de zero. Dacă '''vectorul''' îndeplinește aceste restricții, funcția returnează True, altfel returnează False și afișează un mesaj de eroare.


Codul conține și o secțiune '''if __name__ == '__main__':''' care verifică dacă acesta este fișierul principal care este executat și, în caz afirmativ, apelează funcțiile '''conform_restrictiilor()''' și '''numarare_elemente(vector)''' pentru a efectua operațiile necesare.
În blocul principal al codului, se primește input-ul sub formă de vector și se verifică dacă datele îndeplinesc restricțiile impuse, folosind funcția '''conform_restrictiilor'''. Dacă datele sunt conforme, se calculează numărul de elemente unice din vector, folosind funcția '''numarare_elemente'''.

Latest revision as of 13:01, 30 April 2023

Sursa: Unique


Cerinţa[edit]

Dându-se un șir de numere naturale, să se determine câte dintre ele apar o singură dată.

Date de intrare[edit]

Programul citește de la tastatură cel mult 1.000.000 de numere naturale.

Date de ieșire[edit]

Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele sunt corecte.", iar apoi se va afișa pe ecran numărul de numere care apar o singură dată în șir. În caz contrar, se va afișa pe ecran: "Datele nu sunt comform restricțiilor impuse.".

Restricţii şi precizări[edit]

  • numerele citite vor fi mai mici decât 200.000
  • în șir sunt cel puțin un număr și cel mult 1.000.000 de numere naturale

Exemple[edit]

Exemplul 1[edit]

Intrare
5 4 3 2 3 3 5 6 4 3 3
Ieșire
Datele sunt corecte.
2

Exemplul 2[edit]

Intrare
1234542 34 1 2 313 231 31
Ieșire
Datele nu corespund restricțiilor impuse.

Exemplul 3[edit]

Intrare
100 100 100 100 100 100 200 200
Ieșire
Datele sunt corecte.
0


Rezolvare[edit]

<syntaxhighlight lang="python" line>

  1. 4015 unique

def numarare_elemente(vector):

   numar_unice = 0
   for i in range(len(vector)):
       if vector.count(i) == 1:
           numar_unice += 1
   print(numar_unice)


def conform_restrictiilor(vector):

   for x in vector:
       if x > 200000:
           print("Datele nu sunt comform restricțiilor impuse.")
           return False
   if len(vector) > 1000000 or len(vector) == 0:
       print("Datele nu sunt comform restricțiilor impuse.")
       return False
   print("Datele sunt corecte.")
   return True


if __name__ == '__main__':

   vector = list(map(int, input().split()))
   if conform_restrictiilor(vector) is True:
       numarare_elemente(vector)




</syntaxhighlight>

Explicaţie cod[edit]

Funcția numarare_elemente primește un vector ca argument și calculează numărul de elemente unice din vector. Variabila numar_unice inițializată la zero este incrementată de fiecare dată când este găsit un element unic în vector.

Funcția conform_restrictiilor primește, de asemenea, un vector ca argument și verifică dacă datele din vector îndeplinesc anumite restricții. Mai precis, verifică dacă fiecare element din vector este mai mic sau egal cu 200000 și dacă lungimea vectorului este mai mică sau egală cu 1000000 și diferită de zero. Dacă vectorul îndeplinește aceste restricții, funcția returnează True, altfel returnează False și afișează un mesaj de eroare.

În blocul principal al codului, se primește input-ul sub formă de vector și se verifică dacă datele îndeplinesc restricțiile impuse, folosind funcția conform_restrictiilor. Dacă datele sunt conforme, se calculează numărul de elemente unice din vector, folosind funcția numarare_elemente.