0088 - Palindrom: Difference between revisions

From Bitnami MediaWiki
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">

  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)
  1. 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>