1927 - Bitsort
Sursa: - Bitsort
Cerinţa
Se dă un vector cu n elemente, numere naturale nenule. Afișați termenii în ordine crescătoare.
Termenii care apar de mai multe ori se vor afișa o singură dată.
Date de intrare
Programul citește de la tastatură numărul n', iar apoi n numere naturale nenule, separate prin spații.
Date de ieșire
Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele sunt corecte.", iar apoi se afișează elementele vectorului, în ordine crescătoare, separate prin spații, respectând cerința cerută. În caz contrar, se va afișa pe ecran: "Datele nu sunt comform restricțiilor impuse.".
Restricţii şi precizări
- 1 ⩽ n ⩽ 1.000.000
- cele n numere citite vor fi mai mici decât 300.000
Exemple
Exemplul 1
- Intrare
- 7
- 9 8 8 8 1 2 8
- Ieșire
- Datele sunt corecte.
- 1 2 8 9
Exemplul 2
- Intrare
- 4
- 1000001 214141251521 20 20
- Ieșire
- Datele nu corespund restricțiilor impuse.
Exemplul 3
- Intrare
- 5
- 11 11 20 31 31 39
- Ieșire
- Datele sunt corecte.
- 11 20 31 39
Rezolvare
<syntaxhighlight lang="python" line>
- 1927 Bitsort
def bitsort(vector):
vector.sort() for i in range(len(vector) - 1): if vector[i] != vector[i + 1]: print(vector[i], end=" ") if vector[len(vector) - 1] != vector[len(vector) - 2]: print(vector[len(vector) - 1])
def conform_restrictiilor(n, vector):
if n < 1 or n > 1000000: print("Datele nu sunt comform restricțiilor impuse.") return False for x in vector: if x > 300000 or x < 1: print("Datele nu sunt comform restricțiilor impuse.") return False return True
if __name__ == '__main__':
n = int(input()) vector = list(map(int, input().split())) if conform_restrictiilor(n, vector) is True: print("Datele sunt corecte.") bitsort(vector)
</syntaxhighlight>
Explicaţie cod
Funcția bitsort primește ca parametru un vector și sortează elementele sale. Apoi, pentru a elimina elementele duplicate, compară fiecare element cu elementul următor și îl afișează dacă este diferit de acesta. La final, verifică și ultimul element din vector.
Funcția conform_restrictiilor primește ca parametri un număr întreg n și un vector de numere întregi vector. Verifică dacă n respectă restricțiile impuse, respectiv dacă este între 1 și 1.000.000, iar fiecare element al vectorului este între 1 și 300.000. Dacă datele de intrare respectă aceste restricții, funcția returnează True, altfel returnează False.
În funcția main, se citește numărul n și vectorul de la intrare și se apelează funcția conform_restrictiilor pentru a verifica restricțiile. Dacă acestea sunt respectate, se afișează mesajul Datele sunt corecte. și se apelează funcția bitsort pentru a sorta și afișa elementele unice din vector.