0975 - Cuvinte 2

De la Universitas MediaWiki

Cerinţa

Se dă o propoziție formată din litere mici ale alfabetului englez, spații și semnele de punctuație ,.. Determinați un cuvânt palindrom din propoziție, primul în ordine alfabetică.

Date de intrare

Programul citește de la tastatură propoziția dată.

Date de ieșire

Programul va afișa pe ecran cuvântul determinat, sau mesajul IMPOSIBIL, dacă în șir nu există niciun cuvânt palindrom.

Restricţii şi precizări

  • propoziția citită va conține cel mult 255 de caractere
  • cuvintele din propoziție vor avea maximum 10 litere

Exemplu 1

Intrare
ele deschid un capac, aerisirea este ok
Iesire
Datele de intrare corespund restrictiilor impuse
aerisirea


Exemplu 2

Intrare
acel produs este nemultumitor
Iesire
Datele de intrare nu corespund restrictiilor impuse


Rezolvare

import string


def este_palindrom(cuvant):
    return cuvant == cuvant[::-1]


def main():
    # Citirea propoziției de la tastatură
    propozitie = input().strip()

    # Verifică dacă propoziția respectă restricțiile
    if len(propozitie) > 255 or any(len(cuvant) > 10 for cuvant in propozitie.split()):
        print("Datele de intrare nu corespund restrictiilor impuse")
        return

    print("Datele de intrare corespund restrictiilor impuse")

    # Înlăturarea semnelor de punctuație
    propozitie = propozitie.translate(str.maketrans('', '', string.punctuation))

    # Obținerea listei de cuvinte
    cuvinte = propozitie.split()

    # Filtrarea cuvintelor palindrom și sortarea lor în ordine alfabetică
    cuvinte_palindrom = sorted(cuvant for cuvant in cuvinte if este_palindrom(cuvant))

    # Afișarea rezultatului
    if cuvinte_palindrom:
        print(cuvinte_palindrom[0])
    else:
        print("IMPOSIBIL")


if __name__ == "__main__":
    main()