2631 - H4

From Bitnami MediaWiki

Context[edit | edit source]

Spunem că două cuvinte sunt anagrame dacă au aceleași litere, eventual în altă ordine. De exemplu, abac și baca sunt anagrame, dar abac și abbc nu sunt. Dându-se un șir de cuvinte separate prin spații sau enter, vom considera că dacă mai multe cuvinte sunt anagrame, atunci ele fac parte din același grup.

Cerinţa[edit | edit source]

Să se determine numărul maxim de cuvinte dintr-un grup.

Date de intrare[edit | edit source]

Programul citește de la tastatură o succesiune de cuvinte separate prin spații.

Date de ieșire[edit | edit source]

Programul va afișa pe ecran un singur număr reprezentând numărul maxim de cuvinte dintr-un grup. În cazul în care datele introduse de la tastatură nu îndeplinesc cerințele enunțate, pe ecran se va afișa mesajul "Datele de intrare nu respecta cerintele impuse." , iar daca se indeplinesc, se afiseaza mesajul "Datele de intrare respecta cerintele impuse."

Restricţii şi precizări[edit | edit source]

  • Cuvintele au lungimea cel mult 14 și conțin numai litere mici.
  • Vor exista cel mult 100.000 de cuvinte în șir.

Exemplul 1[edit | edit source]

Intrare
alee leee   elea car   rac eela eeel  elee  elee
Ieșire
Datele de intrare respecta cerintele impuse.
4

Explicație[edit | edit source]

Grupul maximal este format din cuvintele leee, eeel, elee, elee.

Exemplul 2[edit | edit source]

Intrare
Alee leee   elea car   


Ieșire
Datele de intrare nu respecta cerintele impuse.


Rezolvare[edit | edit source]

<syntaxhighlight lang="python" line> def numar_maxim_anagrame(cuvinte):

   grupuri_anagrame = {}
   for cuvant in cuvinte:
       cheie = .join(sorted(cuvant))
       if cheie in grupuri_anagrame:
           grupuri_anagrame[cheie].append(cuvant)
       else:
           grupuri_anagrame[cheie] = [cuvant]
   numar_maxim = max(len(grup) for grup in grupuri_anagrame.values())
   return numar_maxim


if __name__ == "__main__":

   try:
       input_str = input()
       cuvinte = input_str.split()
       if all(1 <= len(cuvant) <= 14 and cuvant.islower() for cuvant in cuvinte) and 1 <= len(cuvinte) <= 100000:
           rezultat = numar_maxim_anagrame(cuvinte)
           print("Datele de intrare respecta cerintele impuse.")
           print(rezultat)
       else:
           print("Datele de intrare nu respecta cerintele impuse.")
   except ValueError:
       print("Datele de intrare nu respecta cerintele impuse.")

</syntaxhighlight>