0294 – Egale Oglindit

From Bitnami MediaWiki

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: "))

  1. 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()

  1. 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>