Laborator 3 - Săptămâna 3
Instalați PyCharm sau alt editor.
Predați rezolvările în săptămâna 3 într-un fișier main.py
comis în repository-ul vostru.
Scrieți un program care determină cea mai lungă subsecvență cu o anumită proprietate a unei liste de numere. Fiecare student primește două proprietăți: prima dintre 1-10
, a doua dintre 11-20
.
Rezolvați problema folosind:
- Minim trei funcții: una pentru calcule, specificată, o funcție de test cu assert pentru cea de calcul și alta care citește, afișează și apelează funcția pentru calcule. Nu aveți voie să folosiți cod în afara unei funcții: fără variabile globale.
- O interfață cu utilizatorul care are un meniu de genul:
- Citire date.
- Determinare cea mai lungă subsecvență cu proprietatea 1.
- Determinare cea mai lungă subsecvență cu proprietatea 2.
- Ieșire.
Funcțiile trebuie să aibă denumirile date în enunț și să fie specificate. Funcția de test trebuie să aibă prefixul test_ urmat de denumirea funcției testate.
Proprietățile:
- Toate numerele sunt pătrate perfecte.
- Funcția de calcul: get_longest_all_perfect_squares(lst: list[int]) -> list[int]
- Toate numerele sunt prime.
- Funcția de calcul: get_longest_all_primes(lst: list[int]) -> list[int]
- Numerele au semne alternante.
- Funcția de calcul: get_longest_alternating_signs(lst: list[int]) -> list[int]
- Numerele sunt ordonate crescător.
- Funcția de calcul: get_longest_sorted_asc(lst: list[int]) -> list[int]
- Toate numerele sunt palindroame.
- Funcția de calcul: get_longest_all_palindromes(lst: list[int]) -> list[int]
- Toate numerele sunt divizibile cu k (citit).
- Funcția de calcul: get_longest_div_k(lst: list[int], k: int) -> list[int]
- Toate numerele sunt neprime.
- Funcția de calcul: get_longest_all_not_prime(lst: list[int]) -> list[int]
- Suma numerelor este număr prim.
- Funcția de calcul: get_longest_sum_is_prime(lst: list[int]) -> list[int]
- Produsul numerelor este impar.
- Funcția de calcul: get_longest_product_is_odd(lst: list[int]) -> list[int]
- Toate numerele sunt pare.
- Funcția de calcul: get_longest_all_even(lst: list[int]) -> list[int]
- Toate numerele au același număr de biți de 1 în reprezentarea binară.
- Funcția de calcul: get_longest_same_bit_counts(lst: list[int]) -> list[int]
- Toate numerele același număr de divizori.
- Funcția de calcul: get_longest_same_div_count(lst: list[int]) -> list[int]
- Toate numerele sunt formate din cifre prime.
- Funcția de calcul: get_longest_prime_digits(lst: list[int]) -> list[int]
- Toate numerele au partea întreagă egală cu partea fracționară.
- Funcția de calcul: get_longest_equal_int_real(lst: list[float]) -> list[float]
- Toate numerele se pot scrie ca
x**k
,k
citit,x
întreg pozitiv.
- Funcția de calcul: get_longest_powers_of_k(lst: list[int], k: int) -> list[int]
- Toate numerele sunt în progresie aritmetică.
- Funcția de calcul: get_longest_arithmetic_progression(lst: list[int]) -> list[int]
- Media numerelor nu depășește o valoare citită.
- Funcția de calcul: get_longest_average_below(lst: list[int], average: float) -> list[int]
- Numărul de cifre este în ordine descrescătoare.
- Funcția de calcul: get_longest_digit_count_desc(lst: list[int]) -> list[int]
- Concatenarea numerelor din subsecvență are cifrele în ordine crescătoare.
- Funcția de calcul: get_longest_concat_digits_asc(lst: list[int]) -> list[int]
- Concatenarea numerelor din subsecvență este număr prim.
- Funcția de calcul: get_longest_concat_is_prime(lst: list[int]) -> list[int]