2995 - Finserare

From Bitnami MediaWiki
Revision as of 19:55, 19 March 2023 by Cuceu Andrei (talk | contribs) (Pagină nouă: ==Cerință== Scrieți funcția inserare care primește ca parametru un număr natural n și furnizează prin intermediul aceluiași parametru numărul obținut din n prin inserarea, între oricare două cifre alăturate ale sale, a valorii absolute a diferenței acestora. ==Restricții de precizări== :'''10 ≤ n ≤ 99999''' :Puteți apela funcția matematică '''abs'''. ==Exemplul 1== :Dacă '''n = 7255''', atunci, după apelul '''inserare(n)''' valoarea lui n va fi '...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Cerință

Scrieți funcția inserare care primește ca parametru un număr natural n și furnizează prin intermediul aceluiași parametru numărul obținut din n prin inserarea, între oricare două cifre alăturate ale sale, a valorii absolute a diferenței acestora.


Restricții de precizări

10 ≤ n ≤ 99999
Puteți apela funcția matematică abs.


Exemplul 1

Dacă n = 7255, atunci, după apelul inserare(n) valoarea lui n va fi 7523505.

Important

Soluţia propusă va conţine doar definiţia funcţiei cerute. Prezenţa în soluţie a altor instrucţiuni poate duce erori de compilare sau de execuţie care vor avea ca efect depunctarea soluţiei.


Rezolvare

Rezolvare ver. 1

<syntaxhighlight lang="python" line="1" start="1">

def inserare(n):

   """
   Inserează valoarea absolută a diferenței între oricare două cifre alăturate
   în numărul natural n.
   """
   if not 10 <= n <= 99999:
       raise ValueError("n trebuie să fie între 10 și 99999")
   n_str = str(n)
   result = n_str[0]
   for i in range(1, len(n_str)):
       diff = abs(int(n_str[i]) - int(n_str[i-1]))
       result += str(diff) + n_str[i]
   return int(result)


if __name__ == '__main__':

   n = int(input("Introduceți un număr natural: "))
   try:
       n = inserare(n)
       print(n)
   except ValueError as e:
       print(e)


</syntaxhighlight>