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
Se numeşte permutare a unei mulţimi finite orice rearanjare a tuturor elementelor acelei mulţimi.
Cerinţa
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
Programul citește de la tastatură numărul n, iar apoi cele n elemente ale şirului, separate prin spaţii.
Date de ieșire
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
- 1 ≤ n ≤ 100
Exemplu 1
- Intrare
- 5
- 2 5 4 3 1
- Ieșire
- DA
Exemplu 2
- Intrare
- 5
- 2 5 4 3 9
- Ieșire
- NU
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>
- 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>