1454 - Permutare Cuvant
Cerinţa[edit | edit source]
Se dă un cuvânt format din litere ale alfabetului englez și cifre. Afișați toate permutările circulare spre stânga ale sale.
Date de intrare[edit | edit source]
Fișierul de intrare permutarecuvantin.txt conține cuvântul pentru care se vor afișa permutările circulare spre stânga.
Date de ieşire[edit | edit source]
Fișierul de ieșire permutarecuvantout.txt va conține pe o singura linie toate permutările circulare ale cuvântului, separate prin câte un spațiu.
Restricții și precizări[edit | edit source]
- Cuvântul va avea maximum 20 de caractere.
Exemplul 1[edit | edit source]
- permutarecuvantin.txt
Hello
- permutarecuvantout.txt
Datele de intrare corespund restrictiilor impuse. Hello elloH lloHe loHel oHell
Exemplul 2[edit | edit source]
- permutarecuvantin.txt
car
- permutarecuvantout.txt
Datele de intrare corespund restrictiilor impuse. car arc rca
Exemplul 3[edit | edit source]
- permutarecuvantin.txt
acestcuvantesteprealung
- permutarecuvantout.txt
Datele de intrare nu corespund restrictiilor impuse.
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line>
- functia de validare verifica daca datele de intrare sunt in intervalul specificat
def validare(cuvant_validare):
# verificam daca lungimea cuvantului este mai mica sau egala cu 20 if len(cuvant_validare) > 20: raise ValueError # ridicam o eroare daca lungimea cuvantului nu este in intervalul 0-20 for caracter in cuvant_validare: # parcurgem fiecare caracter din cuvant # verificam daca caracterul este o litera a alfabetului englezesc sau o cifra if not caracter.isalpha() and not caracter.isdigit(): raise ValueError file_out.write("Datele de intrare corespund restrictiilor impuse.\n")
- functia permutari_circulare genereaza toate permutarile circulare ale unui cuvant
def permutari_circulare(cuvant):
# generam toate permutarile circulare ale cuvantului return [cuvant[i:] + cuvant[:i] for i in range(len(cuvant))]
if __name__ == '__main__':
file_in = open("permutarecuvantin.txt", "r") file_out = open("permutarecuvantout.txt", "w")
try: # citim cuvantul cuvant_main = file_in.readline().strip() # validam datele de intrare validare(cuvant_main) # generam toate permutarile circulare ale cuvantului si scriem rezultatul in fisierul de iesire file_out.write(' '.join(permutari_circulare(cuvant_main)) + '\n')
except ValueError: file_out.write("Datele de intrare nu corespund restrictiilor impuse.") except IndexError: file_out.write("Datele de intrare nu corespund restrictiilor impuse.")
</syntaxhighlight>