0125 - Permutari2

From Bitnami MediaWiki

Cerinţa[edit | edit source]

Se citeşte un număr natural nenul n, apoi n numere naturale distincte. Să se afişeze, în ordine lexicografică, permutările mulţimii formate din cele n numere citite.

Date de intrare[edit | edit source]

Fişierul de intrare permutari2IN.txt conţine pe prima linie numărul n, ia r pe a doua linie n numere naturale.

Date de ieşire[edit | edit source]

Fişierul de ieşire permutari2OUT.txt va conţine pe fiecare linie elementele unei permutări, separate prin câte un spaţiu.

Restricţii şi precizări[edit | edit source]

  • 0 < n < 9
  • cele n numere de pe a doua linie a fişierului de intrare sunt mai mici decât 100

Exemplu:[edit | edit source]

permutari2IN.txt

3
4 7 3

permutari2OUT.txt

3 4 7 
3 7 4 
4 3 7 
4 7 3 
7 3 4 
7 4 3 

Exemplul 2[edit | edit source]

permutari2IN.txt

10
4 7 3

consola:

Eroare: Numărul n trebuie să fie între 0 și 9.

Rezolvare[edit | edit source]

<syntaxhighlight lang="python3" line="1"> def verifica_restrictii(n, numere):

   if not (0 < n < 9):
       print("Eroare: Numărul n trebuie să fie între 0 și 9.")
       return False
   if len(numere) != n or len(set(numere)) != n or any(x >= 100 for x in numere):
       print("Eroare: Introduceți n numere naturale distincte mai mici decât 100.")
       return False
   return True

def generate_permutations(n, current_permutation, numere, output_file):

   if len(current_permutation) == n:
       output_file.write(" ".join(map(str, current_permutation)) + "\n")
       return
   for numar in sorted(numere):
       if numar not in current_permutation:
           generate_permutations(n, current_permutation + [numar], numere, output_file)

def main():

   with open("permutari2IN.txt", "r") as f:
       n = int(f.readline())
       numere = list(map(int, f.readline().split()))
   if verifica_restrictii(n, numere):
       with open("permutari2OUT.txt", "w") as output_file:
           generate_permutations(n, [], numere, output_file)

if __name__ == "__main__":

   main()

</syntaxhighlight>