0309 – Permutare: Difference between revisions
Am creat de la zero. |
|||
Line 31: | Line 31: | ||
== Rezolvare == | == Rezolvare == | ||
=== Rezolvare ver. 1 === | |||
<syntaxhighlight lang="python" line> | |||
def citeste_nr_elemente(): | |||
while True: | |||
nr_elemente = int(input("Introduceti numarul de elemente din multime (1-100): ")) | |||
if 1 <= nr_elemente <= 100: | |||
return nr_elemente | |||
print("Numarul introdus nu este valid. Va rugam sa incercati din nou.") | |||
def citeste_multime(nr_elemente): | |||
while True: | |||
multime = list(map(int, input(f"Introduceti {nr_elemente} numere separate prin spatii: ").split())) | |||
if all(1 <= element <= nr_elemente for element in multime): | |||
return multime | |||
print("Sirul introdus nu reprezinta o permutare a multimii {1, 2, ..., n}. Va rugam sa incercati din nou.") | |||
def verifica_multime(nr_elemente, multime): | |||
if len(multime) == nr_elemente and len(set(multime)) == nr_elemente: | |||
return True | |||
return False | |||
def main(): | |||
nr_elemente = citeste_nr_elemente() | |||
multime = citeste_multime(nr_elemente) | |||
if verifica_multime(nr_elemente, multime): | |||
print("DA") | |||
else: | |||
print("NU") | |||
print("Datele sunt introduse corect.") | |||
if __name__ == '__main__': | |||
main() | |||
</syntaxhighlight> | |||
=== Rezolvare ver. 2 === | |||
<syntaxhighlight lang="python" line> | <syntaxhighlight lang="python" line> | ||
Latest revision as of 10:05, 22 May 2023
Sursa: [1]
Enunt[edit | edit source]
Se numeşte permutare a unei mulţimi finite orice rearanjare a tuturor elementelor acelei mulţimi.
Cerinţa[edit | edit source]
Se dă un şir cu n elemente, numere naturale. Să se verifice dacă reprezintă o permutare a mulţimii {1,2,...,n}.
Date de intrare[edit | edit source]
Programul citește de la tastatură numărul n, iar apoi cele n elemente ale şirului, separate prin spaţii.
Date de ieșire[edit | edit source]
Programul afișează pe ecran mesajul DA, dacă şirul reprezintă o permutare a mulţimii {1,2,...,n}, respectiv NU în caz contrar.Programul va afişa pe ecran numărul de cifre ale numărului citit.
Restricţii şi precizări[edit | edit source]
- 1 ≤ n ≤ 100
Exemplu 1[edit | edit source]
- Intrare
- 5
- 2 5 4 3 1
- Ieșire
- DA
Exemplu 2[edit | edit source]
- Intrare
- 5
- 2 5 4 3 9
- Ieșire
- NU
Rezolvare[edit | edit source]
Rezolvare ver. 1[edit | edit source]
<syntaxhighlight lang="python" line>
def citeste_nr_elemente():
while True: nr_elemente = int(input("Introduceti numarul de elemente din multime (1-100): ")) if 1 <= nr_elemente <= 100: return nr_elemente print("Numarul introdus nu este valid. Va rugam sa incercati din nou.")
def citeste_multime(nr_elemente):
while True: multime = list(map(int, input(f"Introduceti {nr_elemente} numere separate prin spatii: ").split())) if all(1 <= element <= nr_elemente for element in multime): return multime print("Sirul introdus nu reprezinta o permutare a multimii {1, 2, ..., n}. Va rugam sa incercati din nou.")
def verifica_multime(nr_elemente, multime):
if len(multime) == nr_elemente and len(set(multime)) == nr_elemente: return True return False
def main():
nr_elemente = citeste_nr_elemente() multime = citeste_multime(nr_elemente) if verifica_multime(nr_elemente, multime): print("DA") else: print("NU") print("Datele sunt introduse corect.")
if __name__ == '__main__':
main()
</syntaxhighlight>
Rezolvare ver. 2[edit | edit source]
<syntaxhighlight lang="python" line>
- Citim numarul de elemente din multime si verificam ca este intre 1 si 100 inclusiv.
while True:
nr_elemente = int(input("Introduceti numarul de elemente din multime (1-100): ")) if 1 <= nr_elemente <= 100: break print("Numarul introdus nu este valid. Va rugam sa incercati din nou.")
- Citim sirul de numere si verificam ca fiecare numar este intre 1 si numarul dat inclusiv.
while True:
multime = list(map(int, input(f"Introduceti {nr_elemente} numere separate prin spatii: ").split())) if all(1 <= element <= nr_elemente for element in multime): break print("Sirul introdus nu reprezinta o permutare a multimii {1, 2, ..., n}. Va rugam sa incercati din nou.")
- Verificam daca sirul dat are lungimea specificata si contine toate elementele multimii {1, 2, ..., nr_elemente}, precum si ca toate elementele sunt distincte.
if len(multime) == nr_elemente and len(set(multime)) == nr_elemente:
print("DA")
else:
print("NU")
print("Datele sunt introduse corect.")
</syntaxhighlight>