1 of 20

Corso di recupero - Fondamenti di Informatica I

AA. 2024- 2025

Dott. Michele Vitale

2 of 20

Prima simulazione

3 of 20

Prima simulazione - Esercizio 1

Si scriva una funzione elimina_duplicati(lista) che prenda in input una lista di numeri interi e restituisca una nuova lista in cui:

  • ogni elemento appare una sola volta (quindi i duplicati vengono eliminati),
  • si conserva l'ordine dell’ultima occorrenza di ciascun elemento.

Esempio:

Input: [2,3,2,2,3,1,4,6,5,6]

Output: [2,3,1,4,5,6]

4 of 20

Prima simulazione - Esercizio 2

Data una lista di numeri interi, restituire una lista contenente il numero di occorrenze di ogni cifra (0-9) presente in tutti i numeri della lista.

Esempio:

Input: [42,332,12]

Output: [0, 1, 3, 2, 1, 0, 0, 0, 0, 0]

5 of 20

Prima simulazione - Esercizio 3

Dato un intero n, calcolare ricorsivamente il prodotto delle sue cifre.

Esempio:

Input: 1234

Output: 24

Input: 21023121231

Output: 0

6 of 20

Prima simulazione - Esercizio 4

Scrivere una funzione segui_percorso(mappa, partenza) che prende in input:

  • mappa: una matrice (lista di liste) di caratteri. Ogni cella contiene uno dei seguenti caratteri: 'N' (nord), 'S' (sud), 'E' (est), 'O' (ovest), oppure 'X' (meta).
  • partenza: una tupla (riga, colonna) che rappresenta la posizione iniziale.

La funzione deve seguire il percorso indicato dalle direzioni partendo dalla cella partenza, e restituire una lista di tuple che rappresentano le coordinate visitate, nell’ordine in cui sono state percorse, fino a raggiungere una cella con valore 'X'.

Se il percorso esce dalla matrice o entra in un ciclo, la funzione deve restituire la stringa "Meta non raggiungibile".

7 of 20

Seconda simulazione

8 of 20

Simulazione Pretest 05 - Corso di Recupero

su Elearning

9 of 20

Seconda simulazione - Esercizio 1

Scrivi una funzione numeri_filtrati(lista, divisori, soglia) che dati in input una lista di numeri interi, una lista di numeri interi divisori e un numero intero soglia restituisce una lista contenente solo i numeri che sono divisibili per almeno un divisore e sono maggiori della soglia. La lista deve mantenere l’ordine di comparsa dei valori.

Esempio:

Input: lista = [7,4,6,17,15,9] divisori = [2,3] soglia = 8

Output: [15,9]

10 of 20

Seconda simulazione - Esercizio 2

Scrivere una funzione parole_con_prefisso(lista, prefisso) che prende in input una lista di stringhe e una stringa prefisso. La funzione deve restituire una lista contenente solo le parole che iniziano con quel prefisso, ordinate per lunghezza e, a parità, in ordine alfabetico inverso.

Esempio:

Input: ["cane", "casa", "castello", "gatto"], "cas"

Output: [“casa”, “castello”]

11 of 20

Seconda simulazione - Esercizio 3

Scrivere una funzione ricorsiva inverti_parole(frase) che prenda in input una stringa frase composta da parole separate da spazi e restituisca una nuova stringa in cui ogni parola è invertita, ma l’ordine delle parole nella frase resta invariato.

Esempio:

Input: “fondamenti si passa dai”

Output: “itnemadnof is assap iad”

12 of 20

Seconda simulazione - Esercizio 4

Implementare una funzione chiamata percorso_zigzag(mat) che, data una matrice mat di interi di dimensione n x n, calcola la somma dei valori assoluti dei numeri incontrati lungo un percorso che segue queste regole:

  • Il percorso inizia dalla cella (0, 0).
  • Si alterna il movimento tra orizzontale (verso destra) e verticale (verso il basso) ad ogni passo.
  • Se il numero corrente è negativo, allora si inverte il verso del movimento (quindi orizzontale diventa sinistra, verticale diventa su).
  • Il percorso termina quando il prossimo movimento porta fuori dalla matrice o se il percorso entra in una cella già visitata. In questo caso, restituire la somma fino all’ultimo valore prima del ciclo.

13 of 20

Terza simulazione

14 of 20

Simulazione Pretest 06 - Corso di Recupero

su Elearning

15 of 20

Terza simulazione - Esercizio 3

Scrivere una funzione ricorsiva che data una lista di numeri interi e una lista contenente tuple di indici, restituire una lista contenente i prodotti tra gli elementi nella prima lista indicati dalle coppie di indici. In caso di indici più grandi della lunghezza della matrice, considerarli in modo ciclico ripartendo dall'inizio.

Se una delle due liste è vuota, restituire [].

Esempio:

lst = [2,3,4,5,6]

idx = [(1,2), (9,0), (4,1)]

out: [12,12,18]

16 of 20

Terza simulazione - Esercizio 4

Scrivere una funzione percorso_valido(mappa, partenza, direzioni) che prenda in input:

  • mappa: una matrice (lista di liste) di interi.
  • partenza: una tupla (riga, colonna) che rappresenta la posizione iniziale.
  • direzioni: una stringa composta dai caratteri 'N', 'S', 'E', 'O', che indicano le mosse da compiere (nord, sud, est, ovest).

La funzione deve seguire le direzioni iniziando dalla partenza e restituire la somma dei valori delle celle attraversate. Se durante il percorso si esce dalla matrice, la funzione deve rientrare dal lato opposto.

Esempio: se n = 4, dalla posizione (3,1) leggendo “S” si passa in posizione (0,1).

17 of 20

Quarta simulazione

18 of 20

Simulazione Pretest 07 - Corso di Recupero

su Elearning

19 of 20

Quarta simulazione - Esercizio 3

Scrivere una funzione risolvi_operazioni(operazioni, variabile) che data una lista di tuple del tipo

(nomeVariabile, operatore1, operatore2, operazione) restituisca il valore della variabile "out". Le operazioni ammesse sono somma, sottrazione e moltiplicazione.

Si può assumere che una variabile venga utilizzata solo una volta e che la variabile "out" sia sempre presente.

20 of 20

Quarta simulazione - Esercizio 4

Data una matrice nxn con interi liberi in segno e un intero k, scrivere una funzione trova_sottomatrice(n,k) che trova la sottomatrice k x k con somma diagonale massima. La funzione restituisca le coordinate della cella in alto a sinistra della sottomatrice e il valore della somma.