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
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 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
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
- 0 < n < 100
- fiecare cuvânt va conține cel mult 20 de caractere.
Exemplu 1
- palindromin.txt
- 4
- capac
- copil
- aerisirea
- aerare
- palindromout.txt
- Datele introduse corespund restricțiilor impuse.
- 1
- 0
- 1
- 0
Exemplu 2
- palindromin.txt
- 189
- palindromout.txt
- Datele de intrare nu corespund restricțiilor impuse.
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>