0124 - Permutari1
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>