2304 - Cuvinte 7

De la Universitas MediaWiki

Cerinta

Scrieţi un program care citeşte de la tastatură, în această ordine, un număr natural n, apoi n cuvinte, separate prin Enter, urmate de un număr natural k. Numerele citite sunt din intervalul [1,20], iar fiecare cuvânt este format din cel mult 20 de caractere, numai litere mici ale alfabetului englez. Cel puţin unul dintre cuvinte are k litere.

Programul construiește în memorie, apoi afișează pe ecran, un șir care să cuprindă cuvintele citite, separate prin câte un spațiu, astfel încât toate cele care au k litere să ocupe primele poziţii, iar celelalte să se regăsească în continuarea acestora, într-o ordine oarecare.

Exemplul 1

Intrare
5
am
un
cires
de
mai
2
Iesire
Datele de intrare corespund restrictiilor impuse
am un de cires mai

Exemplul 2

Intrare
3
da
acestcuvantesteunulfoartelungdoarpentrucontext
2
2
Iesire
Datele de intrare nu corespund restrictiilor impuse
def main():
    # Citirea numărului n de la tastatură
    n = int(input().strip())

    # Citirea cuvintelor de la tastatură
    cuvinte = [input().strip() for _ in range(n)]

    # Citirea numărului k de la tastatură
    k = int(input().strip())

    # Verifică dacă datele de intrare respectă restricțiile
    if n < 1 or n > 20 or k < 1 or k > 20 or any(len(cuvant) > 20 or not cuvant.islower() for cuvant in cuvinte):
        print("Datele de intrare nu corespund restrictiilor impuse")
        return

    print("Datele de intrare corespund restrictiilor impuse")

    # Separarea cuvintelor în funcție de lungimea lor
    cuvinte_k = [cuvant for cuvant in cuvinte if len(cuvant) == k]
    cuvinte_altele = [cuvant for cuvant in cuvinte if len(cuvant) != k]

    # Construirea și afișarea șirului rezultat
    sir = ' '.join(cuvinte_k + cuvinte_altele)
    print(sir)

if __name__ == "__main__":
    main()

Explicatie

Există și alte soluții corecte.