0097 - Anagrame

From Bitnami MediaWiki
Revision as of 14:26, 27 March 2023 by Hotico Iulia Denisa (talk | contribs) (Pagină nouă: == Cerința == Două cuvinte sunt '''anagrame''' dacă primul se poate obține prin schimbarea ordinii literelor celui de-al doilea. Să se scrie un program care verifică dacă două cuvinte date sunt anagrame. == Date de intrare == Programul citește de la tastatură două cuvinte alcătuite din litere mici ale alfabetului englez. == Date de ieșire == Dacă datele sunt introduse corect, pe ecran se va afișa: " Datele de intrare corespund restrictiilor impuse", apoi pe un...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Cerința

Două cuvinte sunt anagrame dacă primul se poate obține prin schimbarea ordinii literelor celui de-al doilea. Să se scrie un program care verifică dacă două cuvinte date sunt anagrame.

Date de intrare

Programul citește de la tastatură două cuvinte alcătuite din litere mici ale alfabetului englez.

Date de ieșire

Dacă datele sunt introduse corect, pe ecran se va afișa: " Datele de intrare corespund restrictiilor impuse", apoi pe un rand nou va afișa valoarea 1 dacă cele două cuvinte sunt anagrame, respectiv valoarea 0 dacă cuvintele nu sunt anagrame. În caz contrar, se va afișa mesajul:" Datele de intrare nu corespund restrictiilor impuse".

Restricții și precizări

fiecare cuvânt va conține cel mult 20 de caractere.

Exemplu 1

Intrare
rutina unitar
Ieșire
Datele introduse corespund restricțiilor impuse.
1


Exemplu 2

Intrare
RuTiNA unitar
Ieșire
Datele de intrare nu corespund restricțiilor impuse.


Rezolvare

<syntaxhighlight lang="python" line>

  1. 0097 Anagrame

def validare(cuvinte):

   if len(cuvinte) > 255:
       raise ValueError
   for litera in cuvinte:
       if litera < 'a' or litera > 'z':
           if litera != ' ':
               raise ValueError
   print("Datele de intrare corespund restrictiilor impuse")
   return True


def anagrame(cuvinte):

   cuvinte = cuvinte.split()
   frecventa_cuv1 = []
   frecventa_cuv2 = []
   for i in range(128):
       frecventa_cuv1.append(0)
       frecventa_cuv2.append(0)
   for litera in cuvinte[0]:
       frecventa_cuv1[ord(litera)] += 1
   for litera in cuvinte[1]:
       frecventa_cuv2[ord(litera)] += 1
   for i in range(len(frecventa_cuv1)):
       if frecventa_cuv1[i] != frecventa_cuv2[i]:
           print(0)
           return
   print(1)
   return


if __name__ == '__main__':


   try:
       text = input(f"Introduceti textul ")
       validare(text)
       anagrame(text)
   except ValueError:
       print("Datele de intrare nu corespund restrictiilor impuse")
   except IndexError:
       print("Datele de intrare nu corespund restrictiilor impuse")

</syntaxhighlight>