0236 - Sort 2

De la Universitas MediaWiki

Cerinţa

Fişierul text sort2.in conţine, dispuse pe mai multe linii, cel mult 100 de numere naturale, cu cel mult 4 cifre fiecare. Să se afişeze în fişierul sort2.out, în ordine crescătoare, toate numerele din fişierul sort2.in care au cel mult 2 cifre.

Date de intrare

Fişierul de intrare sort2.in conţine, dispuse pe mai multe linii, cel mult 100 de numere naturale, cu cel mult 4 cifre fiecare.

Date de ieşire

Fişierul de ieşire sort2.out va conţine, pe prima linie, în ordine crescătoare, separate prin exact un spaţiu, toate numerele din fişierul sort2.in care au cel mult 2 cifre.

Restricții și precizări

  • dacă în fişierul de intrare nu există numere cu cel mult 2 cifre, se va afişa în fişierul de ieşire, pe prima linie, mesajul “NU EXISTA”.

Exemplu

sort2.in
86 18 7210 73 15 5
7989 825
562 732 5 911
sort2.out
5 5 15 18 73 86

Rezolvare

def sorteaza_numere(fisier_intrare, fisier_iesire):
    # Deschidem fișierul de intrare și citim numerele
    with open(fisier_intrare, 'r') as fisier:
        # Creăm o listă cu numerele care au cel mult două cifre
        numere = [int(numar) for linie in fisier for numar in linie.split() if len(numar) <= 2]

    # Deschidem fișierul de ieșire pentru a scrie rezultatul
    with open(fisier_iesire, 'w') as fisier:
        # Dacă există numere cu cel mult două cifre, le sortăm și le scriem în fișier
        if numere:
            fisier.write(' '.join(str(numar) for numar in sorted(numere)))
        # Dacă nu există numere cu cel mult două cifre, scriem mesajul "NU EXISTA"
        else:
            fisier.write('NU EXISTA')

# Acest cod va fi executat doar dacă scriptul este rulat direct
if __name__ == "__main__":
    # Apelăm funcția cu numele fișierelor de intrare și de ieșire
    sorteaza_numere('sort2.in', 'sort2.out')