3149 - anagrame vocale

From Bitnami MediaWiki

Cerința

Se citește un cuvânt format din cel puțin două și cel mult zece caractere litere mici distincte care conține cel puțin două vocale. Afișați în ordine lexicografică anagramele cuvântului citit care au proprietatea că încep și se termină cu o vocală.

Date de intrare

Programul citește de la tastatură șirul de caractere.

Date de ieșire

Programul va afișa pe ecran anagramele cerute, câte una pe un rând.

Restricții și precizări

  • numărul de caractere ale șirului dat este cuprins între 2 și 10;
  • cuvântul dat este format din litere mici distincte și conține cel puțin două vocale;
  • vocalele sunt a, e, i, o, u;

Exemplul 1

Intrare

alin

Ieșire

alni
anli
ilna
inla

Exemplul 1

Intrare

arc

consola

Cuvântul trebuie să aibă între 2 și 10 litere mici distincte și să conțină cel puțin două vocale.

Rezolvare

<syntaxhighlight lang="python3" line="1"> def este_anagrama_valida(cuvant):

   # Verificăm dacă cuvântul începe și se termină cu o vocală
   return cuvant[0] in 'aeiou' and cuvant[-1] in 'aeiou'

def genereaza_anagrame(curent, ramase, rezultat):

   if not ramase:
       if este_anagrama_valida(curent):
           rezultat.append(curent)
       return
   for i in range(len(ramase)):
       genereaza_anagrame(curent + ramase[i], ramase[:i] + ramase[i+1:], rezultat)

def valideaza_cuvant(cuvant):

   # Verificăm restricțiile
   return 2 <= len(cuvant) <= 10 and len(set(cuvant)) == len(cuvant) and sum(1 for char in cuvant if char in 'aeiou') >= 2

def main():

   try:
       # Citim cuvântul de la tastatură
       cuvant = input("Introduceți un cuvânt: ")
       # Verificăm restricțiile utilizând funcția separată
       if not valideaza_cuvant(cuvant):
           print("Cuvântul trebuie să aibă între 2 și 10 litere mici distincte și să conțină cel puțin două vocale.")
           return
       # Inițializăm o listă pentru a stoca anagramele rezultate
       anagrame = []
       # Generăm anagramele cuvântului care încep și se termină cu o vocală
       genereaza_anagrame(, cuvant, anagrame)
       # Sortăm și afișăm anagramele
       for anagrama in sorted(anagrame):
           print(anagrama)
   except Exception as e:
       print(f"A intervenit o eroare: {e}")

if __name__ == "__main__":

   main()

</syntaxhighlight>