0088 - Palindrom: Difference between revisions
No edit summary |
|||
(One intermediate revision by the same user not shown) | |||
Line 29: | Line 29: | ||
<br> | <br> | ||
== Rezolvare == | == Rezolvare == | ||
<syntaxhighlight lang="python" line> | <syntaxhighlight lang="python" line="1"> | ||
# 0088 Palindrom | # 0088 Palindrom | ||
def verificare(nr_cuvinte): | def verificare(nr_cuvinte): # functia de verificare a datelor de intrare | ||
if 0 >= nr_cuvinte >= 100: | if 0 >= nr_cuvinte >= 100: | ||
raise ValueError | raise ValueError | ||
def palindrom(nr_cuvinte): | def palindrom(nr_cuvinte): # functia de rezolvare | ||
for iterator in range(nr_cuvinte): | for iterator in range(nr_cuvinte): # citim pe rand cuvintele | ||
cuvant = file_in.readline() | cuvant = file_in.readline() | ||
cuvant = cuvant.strip() | cuvant = cuvant.strip() # scapam de spatii goale sau \n de la capetele cuvantului citit | ||
cuvant_invers = cuvant[::-1] | cuvant_invers = cuvant[::-1] # definim cuvantul citit invers | ||
if cuvant == cuvant_invers: | if cuvant == cuvant_invers: # verificam cuvantul nostru sa fie egal cu cuvantul invers | ||
file_out.write("1\n") | file_out.write("1\n") | ||
else: | else: | ||
Line 51: | Line 51: | ||
if __name__ == '__main__': | if __name__ == '__main__': | ||
file_in = open("palindromin.txt") | file_in = open("palindromin.txt") # declararea fisierelor | ||
file_out = open("palindromout.txt", "w") | file_out = open("palindromout.txt", "w") # declararea fisierelor out trebuie cu optiunea w (write) | ||
# din cauza datelor de intrare pot aparea 2 tipuri de erori, valueError sau IndexError pe care le tratam | |||
try: | try: | ||
numar_cuvinte = int(file_in.readline()) | numar_cuvinte = int(file_in.readline()) # citirea lui n | ||
verificare(numar_cuvinte) | verificare(numar_cuvinte) # apelul functiei de verificare | ||
palindrom(numar_cuvinte) | palindrom(numar_cuvinte) # apelul functiei de rezolvare | ||
except ValueError: | except ValueError: | ||
file_out.write("Datele de intrare nu corespund restrictiilor impuse.") | file_out.write("Datele de intrare nu corespund restrictiilor impuse.") | ||
</syntaxhighlight> | </syntaxhighlight> |
Latest revision as of 19:22, 2 May 2023
Cerința[edit | edit source]
Un cuvânt este palindrom dacă se citește la fel în ambele direcții. De exemplu, capac este palindrom.
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 un cuvânt alcătuit din litere mici ale alfabetului englez.
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ă un palindrom, și 0 în caz contrar.
Restricții și precizări[edit | edit source]
- 0 < n < 100
- fiecare cuvânt va conține cel mult 20 de caractere.
Exemplu 1[edit | edit source]
- palindromin.txt
- 4
- capac
- copil
- aerisirea
- aerare
- palindromout.txt
- Datele introduse corespund restricțiilor impuse.
- 1
- 0
- 1
- 0
Exemplu 2[edit | edit source]
- palindromin.txt
- 189
- palindromout.txt
- Datele de intrare nu corespund restricțiilor impuse.
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line="1">
- 0088 Palindrom
def verificare(nr_cuvinte): # functia de verificare a datelor de intrare
if 0 >= nr_cuvinte >= 100: raise ValueError
def palindrom(nr_cuvinte): # functia de rezolvare
for iterator in range(nr_cuvinte): # citim pe rand cuvintele cuvant = file_in.readline() cuvant = cuvant.strip() # scapam de spatii goale sau \n de la capetele cuvantului citit
cuvant_invers = cuvant[::-1] # definim cuvantul citit invers
if cuvant == cuvant_invers: # verificam cuvantul nostru sa fie egal cu cuvantul invers file_out.write("1\n") else: file_out.write("0\n")
if __name__ == '__main__':
file_in = open("palindromin.txt") # declararea fisierelor file_out = open("palindromout.txt", "w") # declararea fisierelor out trebuie cu optiunea w (write)
- din cauza datelor de intrare pot aparea 2 tipuri de erori, valueError sau IndexError pe care le tratam
try: numar_cuvinte = int(file_in.readline()) # citirea lui n verificare(numar_cuvinte) # apelul functiei de verificare palindrom(numar_cuvinte) # apelul functiei de rezolvare except ValueError: file_out.write("Datele de intrare nu corespund restrictiilor impuse.")
</syntaxhighlight>