Esercizi.
Scrivere una funzione filter_prime(lst) che riceve una lista di numeri interi positivi e restituisce una nuova lista contenente solo i numeri primi della lista originale.
Esempio: filter_prime([1, 2, 4, 5, 3, 8, 7, 11, 29, 31, 49]) restituisce [2, 5, 3, 7, 11, 29, 31].
Scrivere una funzione find_couples(lst, target) che riceve una lista di numeri interi lst e un numero intero target e restituisce una lista di tuple. Ogni tupla contiene due numeri diversi della lista originale che, sommati, danno come risultato il target. La funzione non deve includere coppie duplicate o invertite (ad esempio (3, 5) e (5, 3) non devono comparire entrambe).
Esempio: find_couples([1, 2, 3, 4, 5, 6, 7], 8) restituisce [(1, 7), (2, 6), (3, 5)].
Scrivere una funzione substitute(lst, sublst, new_sublist) che riceve tre parametri: una lista principale lst, una sottolista da cercare nella lista principale sublst e una nuova sottolista che la sostituirà new_sublist. La funzione deve restituire una nuova lista in cui tutte le occorrenze della sottolista sublst nella lista principale sono sostituite dalla sottolista new_sublist. La funzione deve funzionare anche con sottoliste di lunghezza variabile.
Esempio: substitute([1, 2, 3, 4, 2, 3, 5], [2, 3], [9, 3, 9]) restituisce [1, 9, 3, 9, 4, 9, 3, 9, 5].
Scrivere una funzione max_sum_non_adjacent_3(lst) che riceve una lista di numeri interi positivi lst e calcola la somma massima ottenibile sommando tre elementi non adiacenti nella lista. Si può assumere che la lista abbia almeno 5 elementi.
Esempio: max_sum_non_adjacent_3([1, 8, 3, 10, 5]) restituisce 9 (dato dalla somma di 1, 3 e 5).
Esempio: max_sum_non_adjacent_3([2, 1, 1, 1, 10, 4, 6, 9]) restituisce 21 (dato dalla somma di 2, 10 e 9).
BONUS (molto difficile). Scrivere una funzione max_sum_non_adjacent(lst) che riceve una lista di numeri interi positivi lst e calcola la somma massima ottenibile sommando elementi non adiacenti nella lista.
Esempio: max_sum_non_adjacent([2, 1, 1, 1, 10, 4, 6, 9]) restituisce 22 (dato dalla somma di 2, 1, 10 e 9).
Clicca qui per vedere le soluzioni!