2205 - permrep

From Bitnami MediaWiki
Revision as of 17:16, 4 December 2023 by Gabii (talk | contribs) (Pagină nouă: == Enunț == Se consideră un cuvânt <code>C</code> format din litere mici, nu neapărat distincte. = Cerința = Să se afișeze în ordine lexicografică toate cuvintele distincte formate cu exact aceleași caractere ca și <code>C</code>. = Date de intrare = Fișierul de intrare <code>permrepIN.txt</code> conține pe prima linie cuvântul <code>C</code>. = Date de ieșire = Fișierul de ieșire <code>permrepOUT.txt</code> va conține pe câte o linie un cuvânt care are...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Enunț[edit | edit source]

Se consideră un cuvânt C format din litere mici, nu neapărat distincte.

Cerința[edit | edit source]

Să se afișeze în ordine lexicografică toate cuvintele distincte formate cu exact aceleași caractere ca și C.

Date de intrare[edit | edit source]

Fișierul de intrare permrepIN.txt conține pe prima linie cuvântul C.

Date de ieșire[edit | edit source]

Fișierul de ieșire permrepOUT.txt va conține pe câte o linie un cuvânt care are exact aceleași litere ca și C. În cazul în care restricțiile nu sunt îndeplinite, se va afișa mesajul "Nu corespunde restricțiilor".

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

  • Cuvântul C va avea lungimea de cel mult 9

Exemplul 1[edit | edit source]

permrepIN.txt

mama

permrepOUT.txt

aamm
amam
amma
maam
mama
mmaa

Exemplul 2[edit | edit source]

permrepIN.txt

Pneumonomie

consola

Nu corespunde restricțiilor

Rezolvare[edit | edit source]

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

   if len(cuvant) == 0:
       return []
   litera = cuvant[0]
   permutari_rest = genereaza_permutari(cuvant[1:])
   rezultat = set()
   for perm in permutari_rest:
       for i in range(len(perm) + 1):
           rezultat.add(perm[:i] + litera + perm[i:])
   return list(rezultat)

def main():

   # Citire cuvânt din fișierul de intrare
   with open('permrepIN.txt', 'r') as intrare:
       cuvant = intrare.readline().strip()
   # Verificare lungime cuvânt
   if len(cuvant) > 9:
       print("Nu corespunde restricțiilor")
       return
   # Generare și sortare lexicografică a permutărilor cuvântului
   permutari = genereaza_permutari(cuvant)
   permutari.sort()
   # Scriere în fișierul de ieșire
   with open('permrepOUT.txt', 'w') as iesire:
       for perm in permutari:
           iesire.write(perm + '\n')

if __name__ == "__main__":

   main()

</syntaxhighlight>