1454 - Permutare Cuvant
De la Universitas MediaWiki
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
# 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.")