2441 - Pereche descentrata

From Bitnami MediaWiki

Cerinţa[edit | edit source]

O pereche de cuvinte, unul cu număr par de litere, iar celălalt cu număr impar de litere, se numește descentrată dacă se poate obține cuvântul cu număr par de litere din celălalt, prin duplicarea caracterului din mijlocul acestuia.

Exemplu: perechile crezi și creezi, respectiv a și aa sunt descentrate.

Date de intrare[edit | edit source]

Programul citește de la tastatură un text.

Date de ieşire[edit | edit source]

Programul va afișa pe ecran mesajul DA, dacă acesta conține cel puțin o pereche descentrată, sau mesajul NU în caz contrar.

Restricții și precizări[edit | edit source]

  • textul are cel mult 100 de caractere
  • cuvintele sunt formate din litere mici ale alfabetului englez
  • cuvintele sunt separate prin câte un spațiu

Exemplul 1[edit | edit source]

Intrare
crezi ca poti sa creezi ceva original
Ieșire
Datele introduse corespund restricțiilor impuse.
DA


Explicație[edit | edit source]

Perechea descentrată de cuvinte este crezi – creezi.

Exemplul 2[edit | edit source]

Intrare
242434545
Ieșire
Datele introduse nu corespund restricțiilor impuse.


Rezolvare[edit | edit source]

<syntaxhighlight lang="python" line>

  1. Definim funcția de verificare a valorilor s

def verificare(s_val):

   # Verificăm dacă s respectă restricțiile problemei
   if 1 <= len(s_val) <= 100 and all(c.islower() or c.isspace() for c in s_val):
       # Dacă valorile sunt valide, returnăm True
       return True
   else:
       # Dacă valorile nu sunt valide, ridicăm o excepție
       raise ValueError


  1. Definim funcția pentru verificarea dacă există cel puțin o pereche descentrată

def exista_pereche_descentrata(s_cuv):

   # Transformăm șirul în listă de cuvinte
   cuvinte = s_cuv.split()
   # Pentru fiecare cuvânt cu număr impar de litere
   for cuvant in cuvinte:
       if len(cuvant) % 2 == 1:
           # Calculăm cuvântul descentrat
           mijloc = len(cuvant) // 2
           cuvant_descentrat = cuvant[:mijloc] + cuvant[mijloc] * 2 + cuvant[mijloc+1:]
           # Verificăm dacă cuvântul descentrat se află în listă
           if cuvant_descentrat in cuvinte:
               return 'DA'
   return 'NU'


  1. Verificăm dacă acest script este rulat direct (nu este importat ca modul)

if __name__ == '__main__':

   try:
       # Citim șirul de caractere
       s = input("Introduceti sirul de caractere: ")
       # Verificăm dacă datele introduse sunt valide
       if verificare(s):
           # Dacă datele sunt valide, afișăm un mesaj de confirmare
           print("Datele introduse corespund restricțiilor impuse.")
       # Verificăm dacă există cel puțin o pereche descentrată și afișăm rezultatul
       print(exista_pereche_descentrata(s))
   # Tratăm cazul în care datele introduse nu sunt valide
   except ValueError:
       # Afișăm un mesaj de eroare
       print("Datele introduse nu corespund restricțiilor impuse.")


</syntaxhighlight>