0089 - Palindrom Propozitie
Un cuvânt este palindrom dacă se citește la fel în ambele direcții. De exemplu, capac este palindrom.
O propoziție este palindromică dacă prin eliminarea spațiilor și a altor semne de punctuație devine palindrom. De exemplu, propoziția ele fac cafele este palindromică.
Cerinţa[edit | edit source]
Să se scrie un program care citește mai multe propoziții și determină despre fiecare dacă este palindromică.
Date de intrare[edit | edit source]
Fișierul de intrare palindromin.txt conține pe prima linie un număr natural n, iar pe următoarele n linii câte o propoziție alcătuita din litere mici ale alfabetului englez și spații.
Date de ieşire[edit | edit source]
Fișierul de ieșire palindromout.txt va conține n linii. Linia i va conține valoarea 1 dacă pe linia i+1 din fișierul de intrare se află o propoziție palindromică, și 0 în caz contrar.
Restricții și precizări[edit | edit source]
- 0<n<100
- fiecare propoziție va conține cel mult 200 de caractere.
Exemplul 1[edit | edit source]
- palindromin.txt
4 capac ele fac cafele ale nu fac cafele aerare
- palindromout.txt
Datele de intrare corespund restrictiilor impuse. 1 1 0 0
Exemplul 2[edit | edit source]
- palindromin.txt
101KKGKKG
- palindromout.txt
Datele de intrare nu corespund restrictiilor impuse.
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line>
- functia de validare verifica daca datele de intrare sunt in intervalul specificat
def validare(n_validare, propozitii_validare):
# verificam daca n este in intervalul 0-100 if n_validare <= 0 or n_validare > 100: raise ValueError # ridicam o eroare daca n nu este in intervalul 0-100 for propozitie_validare in propozitii_validare: # parcurgem lista de propozitii # verificam daca lungimea propozitiei este mai mica sau egala cu 200 if len(propozitie_validare) > 200: raise ValueError for caracter in propozitie_validare: # parcurgem fiecare caracter din propozitie # verificam daca caracterul este o litera mica a alfabetului englezesc if not caracter.islower() and not caracter.isspace(): raise ValueError file_out.write("datele de intrare corespund restrictiilor impuse\n")
- functia is_palindrome verifica daca o propozitie este palindromica
def este_palindrom(propozitie_palindrom):
# eliminam spatiile din propozitie si verificam daca este palindrom propozitie_fara_spatii = propozitie_palindrom.replace(' ', ) return propozitie_fara_spatii == propozitie_fara_spatii[::-1]
if __name__ == '__main__':
file_in = open("palindromin.txt", "r") file_out = open("palindromout.txt", "w")
try: # citim numarul de propozitii n_main = int(file_in.readline()) # citim propozitiile propozitii_main = [linie.strip() for linie in file_in] # validam datele de intrare validare(n_main, propozitii_main) # pentru fiecare propozitie, verificam daca este palindromica si scriem rezultatul in fisierul de iesire for propozitie in propozitii_main: file_out.write('1\n' if este_palindrom(propozitie) else '0\n')
# daca datele de intrare nu sunt valide, afisam un mesaj de eroare except ValueError: file_out.write("Datele de intrare nu corespund restrictiilor impuse.") # daca datele de intrare sunt incomplete, afisam un mesaj de eroare except IndexError: file_out.write("Datele de intrare nu corespund restrictiilor impuse.")
</syntaxhighlight>