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.")