0096 - Palindrom Maxim

From Bitnami MediaWiki

Cerinţa[edit | edit source]

Să se scrie un program care citește o propoziție și determină cuvântul 'palindrom de lungime maximă.

Date de intrare[edit | edit source]

Programul citește de la tastatură o propoziție alcătuită din litere mici sau mari ale alfabetului englez, cifre, semne de punctuație și spații.

Date de ieșire[edit | edit source]

Programul afișează pe ecran cel mai lung cuvânt palindrom.

Restricţii şi precizări[edit | edit source]

  • propoziția va conține cel mult 255 de caractere;
  • cuvintele conțin doar litere și/sau cifre și conțin cel mult 20 de caractere;
  • dacă în propoziție există mai multe cuvinte palindrom de lungime maximă, se va afișa primul dintre ele;
  • semnele de punctuație din propoziție pot fi :;.,
  • nu se face distincție între literele mari și cele mici;
  • pentru toate testele date există soluție

Exemplul 1[edit | edit source]

Intrare
121 prieteni analizeaza Un capac; aeriSIrea    radar
Iesire
Datele de intrare corespund restrictiilor impuse
aeriSIrea


Exemplul 2[edit | edit source]

Intrare
121 prieteni analizeazacevafoarteinteresant Un capac; aeriSIrea    radar
Iesire
Datele de intrare nu corespund restrictiilor impuse


Rezolvare[edit | edit source]

<syntaxhighlight lang="python" line> import string


def main():

   # Citirea propoziției de la tastatură
   propozitie = input().strip()
   # Verifică dacă propoziția respectă restricțiile
   if len(propozitie) > 255:
       print("Datele de intrare nu corespund restrictiilor impuse")
       return
   if any(len(cuvant) > 20 for cuvant in propozitie.split()):
       print("Datele de intrare nu corespund restrictiilor impuse")
       return
   print("Datele de intrare corespund restrictiilor impuse")
   # Eliminarea semnelor de punctuație din propoziție
   propozitie = propozitie.translate(str.maketrans(, , string.punctuation))
   # Căutarea celui mai lung cuvânt palindrom
   cuvinte = propozitie.split()
   cuvinte_palindrom = [cuvant for cuvant in cuvinte if cuvant.lower() == cuvant.lower()[::-1]]
   cuvant_maxim = max(cuvinte_palindrom, key=len) if cuvinte_palindrom else "nu exista"
   # Afișarea cuvântului obținut
   print(cuvant_maxim)


if __name__ == "__main__":

   main()

</syntaxhighlight>

Explicatie[edit | edit source]

În propoziție sunt 4 cuvinte palindrom: 121, capac, aeriSIrea, radar. Dintre acestea, cel mai lung este aeriSIrea.