0124 - Permutari1

From Bitnami MediaWiki

Cerinţa

Se citeşte un număr natural nenul n. Să se afişeze, în ordine invers lexicografică, permutările mulţimii {1,2,..,n}.

Date de intrare

Fişierul de intrare permutari1IN.txt conţine pe prima linie numărul n.

Date de ieşire

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

Restricţii şi precizări

  • 0 < n < 9

Exemplul 1

permutari1IN.txt

3

permutari1OUT.txt

3 2 1 
3 1 2 
2 3 1 
2 1 3 
1 3 2 
1 2 3 

Exemplul 2

permutari1IN.txt

10

consola

Eroare: Numărul n trebuie să fie în intervalul (0, 9).

Rezolvare

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

   if not (0 < n < 9):
       print("Eroare: Numărul n trebuie să fie în intervalul (0, 9).")
       return False
   return True

def generate_permutations(n, current_permutation, output_file):

   if len(current_permutation) == n:
       output_file.write(" ".join(map(str, current_permutation[::-1])) + "\n")
       return
   for i in range(1, n + 1):
       if i not in current_permutation:
           generate_permutations(n, current_permutation + [i], output_file)

def main():

   with open("permutari1IN.txt", "r") as f:
       linie = f.readline().strip()
       if not linie:
           print("Eroare: Fișierul de intrare este gol sau conține doar linii goale.")
           return
       try:
           n = int(linie)
       except ValueError:
           print("Eroare: Numărul n nu poate fi convertit la întreg. Asigurați-vă că fișierul de intrare este formatat corect.")
           return
   if not verifica_restrictii(n):
       return
   with open("permutari1OUT.txt", "w") as output_file:
       generate_permutations(n, [], output_file)

if __name__ == "__main__":

   main()

</syntaxhighlight>