0097 - Anagrame
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>
- 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>