2304 - Cuvinte 7

From Bitnami MediaWiki
Revision as of 20:24, 12 December 2023 by Ghisa Catalin (talk | contribs) (Pagină nouă: == 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ă...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

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.

Exemplu 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.