0194 - Anagrame1
Enunț[edit | edit source]
Se numește anagramă a unui cuvânt dat, un alt cuvânt ce conține toate literele primului, eventual în altă ordine.
Cerinţa[edit | edit source]
Se dă un cuvânt din cel mult 8
litere distincte. Să se afișeze, în ordine alfabetică, toate anagramele acestui cuvânt.
Date de intrare[edit | edit source]
Fişierul de intrare anagrameIN.txt
conţine pe pe prima linie un cuvânt S
, format din cel mult 8
litere distincte ale alfabetului englez.
Date de ieşire[edit | edit source]
Fişierul de ieşire anagrameOUT.txt
va conţine toate anagramele cuvântului S
, fiecare pe o linie, în ordine alfabetică.
Exemplul 1[edit | edit source]
anagrameIN.txt
cal
anagrameOUT.txt
acl alc cal cla lac lca
Exemplul 2[edit | edit source]
anagrameIN.txt
4tal
consola
Cuvântul trebuie să aibă între 1 și 8 litere și să nu conțină numere.
Rezolvare[edit | edit source]
<syntaxhighlight lang="python3" line="1"> from itertools import permutations
def generate_anagrams(word):
# Generăm toate permutările cuvântului all_permutations = permutations(word)
# Sortăm permutările în ordine alfabetică sorted_anagrams = sorted(set(.join(perm) for perm in all_permutations))
return sorted_anagrams
def validate_word(word):
# Verificăm restricțiile return 1 <= len(word) <= 8 and word.isalpha()
def main():
try: # Citim cuvântul din fișierul de intrare with open("anagrameIN.txt", "r") as file: word = file.readline().strip()
# Verificăm restricțiile utilizând funcția separată if not validate_word(word): print("Cuvântul trebuie să aibă între 1 și 8 litere și să nu conțină numere.") return
# Generăm anagramele anagrams = generate_anagrams(word)
# Scriem anagramele în fișierul de ieșire with open("anagrameOUT.txt", "w") as file: for anagram in anagrams: file.write(anagram + '\n')
except Exception as e: print(f"A intervenit o eroare: {e}")
if __name__ == "__main__":
main()
</syntaxhighlight>