3149 - anagrame vocale

From Bitnami MediaWiki

Cerința[edit | edit source]

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[edit | edit source]

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

Date de ieșire[edit | edit source]

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

Restricții și precizări[edit | edit source]

  • 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[edit | edit source]

Intrare

alin

Ieșire

alni
anli
ilna
inla

Exemplul 1[edit | edit source]

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[edit | edit source]

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