0294 – Egale Oglindit
Sursa: [1]
Cerinţa[edit | edit source]
Se dă un şir cu n elemente, numere naturale. Să se verifice dacă oglinditul primului element apare printre celelalte elemente ale șirului.
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ă există în şir elemente egale cu oglinditul primului element, respectiv NU în caz contrar.
Restricţii şi precizări[edit | edit source]
- 1 ≤ n ≤ 100
- elementele şirului vor avea cel mult 9 cifre
Exemplu[edit | edit source]
- Intrare
- 5
- 804 60 102 408 6
- Ieșire
- DA
Rezolvare[edit | edit source]
Rezolvare ver. 1[edit | edit source]
<syntaxhighlight lang="python" line>
def valideaza_numar_intreg_pozitiv(mesaj):
while True: try: valoare = int(input(mesaj)) if valoare <= 0: raise ValueError return valoare except ValueError: print("Vă rugăm introduceți un număr întreg pozitiv.")
def valideaza_lista_numere_intregi_pozitive(mesaj, lungime):
while True: try: valori = input(mesaj).split() valori = [int(valoare) for valoare in valori] if len(valori) != lungime or any(valoare <= 0 for valoare in valori): raise ValueError return valori except ValueError: print(f"Vă rugăm introduceți exact {lungime} numere întregi pozitive, separate prin spațiu.")
def verifica_inversul_in_rest(lst):
primul_element = str(lst[0]) invers_primul_element = primul_element[::-1]
return invers_primul_element in [str(x) for x in lst[1:]]
if __name__ == "__main__":
n = valideaza_numar_intreg_pozitiv("Introduceți numărul de elemente ale șirului: ")
sir = valideaza_lista_numere_intregi_pozitive("Introduceți elementele șirului, separate prin spațiu: ", n)
if verifica_inversul_in_rest(sir): print("DA") else: print("NU")
print("Datele au fost introduse corect.")
</syntaxhighlight>
Rezolvare ver. 2[edit | edit source]
<syntaxhighlight lang="python" line>
n = int(input("Introduceti numarul de elemente ale sirului: "))
- Validam ca numarul de elemente este intre 1 si 100
while n < 1 or n > 100:
n = int(input("Numarul de elemente trebuie sa fie intre 1 si 100. Incercati din nou: "))
sir = input("Introduceti elementele sirului, separate prin spatiu: ").split()
- Validam ca sirul contine exact n elemente
while len(sir) != n:
sir = input(f"Trebuie sa introduceti exact {n} elemente. Incercati din nou: ").split()
primul_element = sir[0] oglinditul_primului_element = primul_element[::-1] # Calculam oglinditul primului element
if oglinditul_primului_element in sir[1:]: # Verificam daca oglinditul apare in restul elementelor
print("DA")
else:
print("NU")
print("Datele au fost introduse corect.")
</syntaxhighlight>