4182 - bac secventa
Cerința
Subprogramul secventa are un singur parametru, n, prin care primește un număr natural, în care nu există secvențe de mai mult de două cifre identice aflate pe poziții consecutive. Subprogramul înlocuiește în n fiecare secvență 22 cu câte o secvență 20 și furnizează, prin același parametru, numărul obținut. Dacă nu se înlocuiește nicio secvență, subprogramul furnizează numărul nemodificat. Scrieți definiția completă a subprogramului.
Restricții și precizări
- 10 ≤ n < 1.000.000.000
- Numele funcției va fi secventa
- Funcția va primi un singur parametru, număruln, iar la finalul funcției nva avea valoarea cerută.
Exemplu
Dacă n=202233228, atunci, după apel, n=202033208.
Important
Soluția propusă va conține doar definiția funcției cerute. Prezența în soluție a altor instrucțiuni poate duce la 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 secventa(n):
""" Funcția înlocuiește în numărul natural dat fiecare secvență de două cifre consecutive egale și diferite de zero cu o secvență de două cifre formate din prima cifră a secvenței și zero. Returnează numărul modificat. """ # Convertim numărul în șir de caractere pentru a putea manipula cifrele individual n_str = str(n) i = 0 # Parcurgem șirul de la stânga la dreapta while i < len(n_str) - 1: # Dacă găsim o secvență de două cifre consecutive egale și diferite de zero if n_str[i] == n_str[i + 1] != "0": # Înlocuim secvența cu prima cifră a secvenței urmată de zero n_str = n_str[:i] + n_str[i] + "0" + n_str[i + 2:] i += 1 # Mutăm cursorul cu o poziție înainte pentru a evita procesarea secvenței din nou i += 1 # Mutăm cursorul cu o poziție înainte # Convertim rezultatul înapoi în număr întreg și îl returnăm return int(n_str)
if __name__ == "__main__":
# Citim un număr natural de la utilizator n = int(input("Introduceți un număr natural: ")) # Verificăm dacă numărul respectă restricțiile problemei if 10 <= n < 1_000_000_000: # Aplicăm funcția secventa și afișăm rezultatul result = secventa(n) print(f"Numărul obținut este: {result}") else: # Afișăm un mesaj de eroare dacă numărul nu respectă restricțiile problemei print("Numărul trebuie să fie între 10 și 999.999.999.")
</syntaxhighlight>