2681 - Invers Max: Difference between revisions
No edit summary |
|||
Line 26: | Line 26: | ||
== Rezolvare == | == Rezolvare == | ||
<syntaxhighlight lang="python" line> | <syntaxhighlight lang="python" line> | ||
# 2681 InversMax | |||
def validare(cuvinte): | |||
if len(cuvinte) > 255: | |||
raise ValueError | |||
print("Datele de intrare corespund restrictiilor impuse") | |||
return True | |||
def inversmax(cuvinte): | |||
cuvinte = cuvinte.split() | |||
maxim = -1 | |||
for cuvant in cuvinte: | |||
contine_litera = False | |||
for litera in cuvant: | |||
if ('a' <= litera <= 'z') or ('A' <= litera <= 'Z'): | |||
contine_litera = True | |||
break | |||
if contine_litera is True and maxim < len(cuvant): | |||
maxim = len(cuvant) | |||
for cuvant in cuvinte: | |||
contine_litera = False | |||
for litera in cuvant: | |||
if ('a' <= litera <= 'z') or ('A' <= litera <= 'Z'): | |||
contine_litera = True | |||
break | |||
if contine_litera is True and maxim == len(cuvant): | |||
print(cuvant[::-1], end=" ") | |||
else: | |||
print(cuvant, end=" ") | |||
if __name__ == '__main__': | |||
try: | |||
text = input(f"Introduceti textul ") | |||
validare(text) | |||
inversmax(text) | |||
except ValueError: | |||
print("Datele de intrare nu corespund restrictiilor impuse") | |||
except IndexError: | |||
print("Datele de intrare nu corespund restrictiilor impuse") | |||
</syntaxhighlight> |
Revision as of 14:59, 27 March 2023
Cerința
Se citește un șir de caractere reprezentând o propoziție care conține litere mari și mici ale alfabetului englez, spații, cifre și alte simboluri. În cele ce urmează, considerăm cuvânt orice secvență delimitată de spații ce conține cel puțin o literă.
Se se afișeze șirul citit astfel încât cuvintele de lungime maximă să fie înlocuite cu inversul (oglinditul) lor, restul cuvintelor și aranjarea lor în propoziție să rămână neschimbate.
Date de intrare
Programul citește de la tastatură șirul de caractere.
Date de ieșire
Dacă datele sunt introduse corect, pe ecran se va afișa: " Datele de intrare corespund restrictiilor impuse", apoi pe un rand nou va afișa șirul transformat în conformitate cu cerința. În caz contrar, se va afișa mesajul:" Datele de intrare nu corespund restrictiilor impuse".
Restricții și precizări
- șirul dat va conține maximum 255 de caractere
Exemplu 1
- Intrare
- Mara 23a4 1234 %&a* %&*( are mere
- Ieșire
- Datele introduse corespund restricțiilor impuse.
- araM 4a32 1234 *a&% %&*( are erem
Exemplu 2
- Intrare
- 14567898765 esdrtyfugihk esdfghuikjnbvcvbhjhg x3456789098765434567&&&&&&&&&&&&%%%%%%%%%%%%% %%^%%%/############@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ fds vcxssdcv @@@@@@@@@@@@@v rdedf @@%$dvbgfrdcvc%^&&&&&&&&&&&&&&&&&&& 212345678987654323456787654345678765434567865432345cvb
67865432345 6543456 765434567654323456765432 34567u8iuygfcvb njkjhgfvcxsdrfthnbvcxdrtyhbvf gfghjkhbvcxc vdchdvfvf f
- Ieșire
- Datele de intrare nu corespund restricțiilor impuse.
Rezolvare
<syntaxhighlight lang="python" line>
- 2681 InversMax
def validare(cuvinte):
if len(cuvinte) > 255: raise ValueError
print("Datele de intrare corespund restrictiilor impuse") return True
def inversmax(cuvinte):
cuvinte = cuvinte.split() maxim = -1
for cuvant in cuvinte: contine_litera = False for litera in cuvant: if ('a' <= litera <= 'z') or ('A' <= litera <= 'Z'): contine_litera = True break
if contine_litera is True and maxim < len(cuvant): maxim = len(cuvant)
for cuvant in cuvinte: contine_litera = False for litera in cuvant: if ('a' <= litera <= 'z') or ('A' <= litera <= 'Z'): contine_litera = True break
if contine_litera is True and maxim == len(cuvant): print(cuvant[::-1], end=" ") else: print(cuvant, end=" ")
if __name__ == '__main__':
try: text = input(f"Introduceti textul ") validare(text) inversmax(text)
except ValueError: print("Datele de intrare nu corespund restrictiilor impuse") except IndexError: print("Datele de intrare nu corespund restrictiilor impuse")
</syntaxhighlight>