1454 - Permutare Cuvant
Cerinţa
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
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
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
- Cuvântul va avea maximum 20 de caractere.
Exemplul 1
- permutarecuvantin.txt
Hello
- permutarecuvantout.txt
Datele de intrare corespund restrictiilor impuse. Hello elloH lloHe loHel oHell
Exemplul 2
- permutarecuvantin.txt
car
- permutarecuvantout.txt
Datele de intrare corespund restrictiilor impuse. car arc rca
Exemplul 3
- permutarecuvantin.txt
acestcuvantesteprealung
- permutarecuvantout.txt
Datele de intrare nu corespund restrictiilor impuse.
Rezolvare
<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>