2995 - Finserare

De la Universitas MediaWiki

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

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)