3161 - permutari5: Difference between revisions
Cristina94 (talk | contribs) mNo edit summary |
Cristina94 (talk | contribs) mNo edit summary |
||
Line 45: | Line 45: | ||
:Date de intrare invalide: Trebuie să introduceți exact 4 numere naturale distincte. | :Date de intrare invalide: Trebuie să introduceți exact 4 numere naturale distincte. | ||
== | ==Exemplu4== | ||
:Introduceți numărul n: -5 | :Introduceți numărul n: -5 | ||
:Introduceți cele -5 numere naturale distincte, separate prin spații: | :Introduceți cele -5 numere naturale distincte, separate prin spații: |
Latest revision as of 18:53, 9 February 2024
Cerinta[edit | edit source]
Se citeste o multime cu n numere naturale. Afisati in ordine lexicografica toate permutarile multimii citite in care elementul minim nu isi schimba pozitia.
Date de intrare[edit | edit source]
Programul citeste de la tastatura numarul n, iar apoi n numere naturale distincte, separate prin spatii.
Date de iesire[edit | edit source]
Programul va afisa pe ecran permutarile cerute, pe rânduri separate, fiecare permutare avand elementele separate prin cate un spatiu.
Restrictii si precizari[edit | edit source]
1 ≤ n ≤ 10 cele n numere citite vor fi mai mici decat 1.000.000.000 si vor fi distincte
Exemplul 1[edit | edit source]
- Intrare
- 4
- 3 1 2 5
- Iesire
- 3 1 5 2
- 3 1 2 5
- 5 1 3 2
- 5 1 2 3
- 2 1 3 5
- 2 1 5 3
Explicatie[edit | edit source]
In acest exemplu se genereaza permutarile in care numarul 1 nu isi schimba pozitia.
Exemplul 2[edit | edit source]
- Intrare
- 3
- 3 2 5
- Iesire
- 3 2 5
- 5 2 3
Explicatie[edit | edit source]
In acest exemplu se genereaza permutarile in care numarul 2 nu isi schimba pozitia.
Exemplu3[edit | edit source]
- Introduceți numărul n: 4
- Introduceți cele 4 numere naturale distincte, separate prin spații: 1 2 3 4 5
- Date de intrare invalide: Trebuie să introduceți exact 4 numere naturale distincte.
Exemplu4[edit | edit source]
- Introduceți numărul n: -5
- Introduceți cele -5 numere naturale distincte, separate prin spații:
- Date de intrare invalide: Numărul n trebuie să fie un număr întreg pozitiv.
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line="1">
- 3161 permutari5
from itertools import permutations
def generate_permutations(arr):
min_index = arr.index(min(arr)) for perm in permutations(arr[0:min_index] + arr[min_index+1:]): perm_list = list(perm) perm_list.insert(min_index, arr[min_index]) print(" ".join(map(str, perm_list)))
def validate_input(n, numbers):
if not isinstance(n, int) or n <= 0: return False, "Numărul n trebuie să fie un număr întreg pozitiv."
if len(numbers) != n or len(set(numbers)) != n: return False, f"Trebuie să introduceți exact {n} numere naturale distincte."
return True, None
def main():
try: n = int(input("Introduceți numărul n: ")) numbers = list(map(int, input(f"Introduceți cele {n} numere naturale distincte, separate prin spații: ").split())) except ValueError: print("Date de intrare invalide. Numărul n și elementele listei trebuie să fie numere naturale.") return
is_valid, error_message = validate_input(n, numbers)
if not is_valid: print("Date de intrare invalide:", error_message) return
generate_permutations(numbers)
if __name__ == "__main__":
main()
</syntaxhighlight>