0125 - Permutari2

From Bitnami MediaWiki
Revision as of 20:50, 3 December 2023 by Gabii (talk | contribs) (Pagină nouă: = Cerinţa = Se citeşte un număr natural nenul <code>n</code>, apoi <code>n</code> numere naturale distincte. Să se afişeze, în ordine lexicografică, permutările mulţimii formate din cele <code>n</code> numere citite. = Date de intrare = Fişierul de intrare <code>permutari2IN.txt</code> conţine pe prima linie numărul <code>n</code>, ia r pe a doua linie <code>n</code> numere naturale. = Date de ieşire = Fişierul de ieşire <code>permutari2OUT.txt</code> va con...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

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>