2692 - Lung Sort Desc: Difference between revisions
Adina Timiș (talk | contribs) Pagină nouă: ==Cerința== Se dă un șir de caractere în care cuvintele sunt formate din litere mici și mari ale alfabetului englez și sunt separate prin spații. Să se afișeze cuvintele pe ecran, fiecare cuvânt pe câte o linie, în ordinea descrescătoare a numărului de litere. Dacă două cuvinte au același număr de litere atunci ele se vor afișa în ordine lexicografică. ==Date de intrare== Programul citește de la tastatură șirul de caractere. ==Date de ieșire== Progra... |
Adina Timiș (talk | contribs) No edit summary |
||
Line 22: | Line 22: | ||
:Datele de intrare nu corespund restricțiilor impuse. | :Datele de intrare nu corespund restricțiilor impuse. | ||
==Rezolvare== | ==Rezolvare== | ||
<syntaxhighlight lang="python" line=""> | <syntaxhighlight lang="python" line="1"> | ||
#2692- Lung Sort Desc | #2692- Lung Sort Desc | ||
def sortare_cuvinte(s): | def sortare_cuvinte(s): | ||
cuvinte = s.split() | cuvinte = s.split() # separăm șirul în cuvinte | ||
numar_litere = [len(cuvant) for cuvant in cuvinte] | numar_litere = [len(cuvant) for cuvant in cuvinte] # listă cu numărul de litere al fiecărui cuvânt | ||
# sortăm cuvintele în funcție de lungimea acestora (descrescător) și în caz de egalitate, le sortăm în ordine alfabetică | |||
cuvinte_sortate = sorted(cuvinte, key=lambda x: (-len(x), x)) | cuvinte_sortate = sorted(cuvinte, key=lambda x: (-len(x), x)) | ||
for cuvant in cuvinte_sortate: | # afișăm cuvintele sortate | ||
for cuvant in cuvinte_sortate: | |||
print(cuvant) | print(cuvant) | ||
if __name__ == '__main__': | if __name__ == '__main__': | ||
s = input('Introduceți șirul | s = input('Introduceți șirul: ') | ||
if len(s) <= 255 and not any(c.isdigit() for c in s): | if len(s) <= 255 and not any(c.isdigit() for c in s): # verificarea restricțiilor | ||
print("Datele de intrare corespund restricțiilor impuse.") | print("Datele de intrare corespund restricțiilor impuse.") | ||
sortare_cuvinte(s) | sortare_cuvinte(s) # sortăm și afișăm cuvintele | ||
else: | else: | ||
print("Datele de intrare nu corespund restricțiilor impuse.") | print("Datele de intrare nu corespund restricțiilor impuse.") | ||
</syntaxhighlight> | </syntaxhighlight> |
Latest revision as of 11:21, 21 May 2023
Cerința[edit | edit source]
Se dă un șir de caractere în care cuvintele sunt formate din litere mici și mari ale alfabetului englez și sunt separate prin spații. Să se afișeze cuvintele pe ecran, fiecare cuvânt pe câte o linie, în ordinea descrescătoare a numărului de litere. Dacă două cuvinte au același număr de litere atunci ele se vor afișa în ordine lexicografică.
Date de intrare[edit | edit source]
Programul citește de la tastatură șirul de caractere.
Date de ieșire[edit | edit source]
Programul va afișa cuvintele din șir pe ecran, conform cerinței.
Restricții și precizări[edit | edit source]
- șirul va conține maximum 255 de caractere;
Exemplul 1[edit | edit source]
- Intrare
- ana are mere
- Ieșire
- Datele de intrare corespund restricțiilor impuse.
- mere
- ana
- are
Exemplul 2[edit | edit source]
- Intrare
- 1234
- Ieșire
- Datele de intrare nu corespund restricțiilor impuse.
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line="1">
- 2692- Lung Sort Desc
def sortare_cuvinte(s):
cuvinte = s.split() # separăm șirul în cuvinte numar_litere = [len(cuvant) for cuvant in cuvinte] # listă cu numărul de litere al fiecărui cuvânt # sortăm cuvintele în funcție de lungimea acestora (descrescător) și în caz de egalitate, le sortăm în ordine alfabetică cuvinte_sortate = sorted(cuvinte, key=lambda x: (-len(x), x))
# afișăm cuvintele sortate for cuvant in cuvinte_sortate: print(cuvant)
if __name__ == '__main__':
s = input('Introduceți șirul: ') if len(s) <= 255 and not any(c.isdigit() for c in s): # verificarea restricțiilor print("Datele de intrare corespund restricțiilor impuse.") sortare_cuvinte(s) # sortăm și afișăm cuvintele else: print("Datele de intrare nu corespund restricțiilor impuse.")
</syntaxhighlight>