2205 - permrep
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 mult9
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>