2304 - Cuvinte 7
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
Exemplu 2
- Intrare
3 da acestcuvantesteunulfoartelungdoarpentrucontext 2 2
- Iesire
Datele de intrare nu corespund restrictiilor impuse
<syntaxhighlight lang="python" line> 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()
</syntaxhighlight>
Explicatie
Există și alte soluții corecte.