2205 - permrep
Enunț
Se consideră un cuvânt C 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 C.
Date de intrare
Fișierul de intrare permrepIN.txt conține pe prima linie cuvântul C.
Date de ieșire
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
- Cuvântul
Cva avea lungimea de cel mult9
Exemplul 1
permrepIN.txt
mama
permrepOUT.txt
aamm amam amma maam mama mmaa
Exemplul 2
permrepIN.txt
Pneumonomie
consola
Nu corespunde restricțiilor
Rezolvare
<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>