0088 - Palindrom: Difference between revisions
Pagină nouă: == Cerința == Un cuvânt este palindrom dacă se citește la fel în ambele direcții. De exemplu, capac este palindrom. == Date de intrare == Fișierul de intrare palindrom.in 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 == Fișierul de ieșire palindrom.out va conține n linii. Linia i va conține valoarea 1 dacă pe linia i+1 din fișierul de intrare se află... |
|||
(2 intermediate revisions by the same user not shown) | |||
Line 2: | Line 2: | ||
Un cuvânt este palindrom dacă se citește la fel în ambele direcții. De exemplu, capac este palindrom. | Un cuvânt este palindrom dacă se citește la fel în ambele direcții. De exemplu, capac este palindrom. | ||
== Date de intrare == | == Date de intrare == | ||
Fișierul de intrare | 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 == | == Date de ieșire == | ||
Fișierul de ieșire | 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 == | == Restricții și precizări == | ||
: 0 < n < 100 | : 0 < n < 100 | ||
: fiecare cuvânt va conține cel mult 20 de caractere. | : fiecare cuvânt va conține cel mult 20 de caractere. | ||
== Exemplu 1 == | == Exemplu 1 == | ||
; | ; palindromin.txt | ||
: 4 | : 4 | ||
: capac | : capac | ||
Line 15: | Line 15: | ||
: aerisirea | : aerisirea | ||
: aerare | : aerare | ||
; | ; palindromout.txt | ||
: Datele introduse corespund restricțiilor impuse. | : Datele introduse corespund restricțiilor impuse. | ||
: 1 | : 1 | ||
Line 23: | Line 23: | ||
<br> | <br> | ||
== Exemplu 2 == | == Exemplu 2 == | ||
; | ; palindromin.txt | ||
: 189 | : 189 | ||
; | ; palindromout.txt | ||
: Datele de intrare nu corespund restricțiilor impuse. | : Datele de intrare nu corespund restricțiilor impuse. | ||
<br> | <br> | ||
== Rezolvare == | |||
<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> |
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>