Esercitazione PR2
Giovedì 12 Novembre 2020

TESTI


    [1] Si definisca una funzione OCaML is_palindrome che determina se una lista è palindroma.
    # is_palindrome ["x"; "a"; "m"; "a"; "x"];;
    
    - : bool = true 
    
    # not(is_palindrome ["a"; "b"]);;
    
    - : bool = true 
    


    Soluzione: il file ese1

    [2] Si definisca una funzione OCaML a tre argomenti insert_at che prende un elemento x, un indice n ed una lista lst, e inserisce x in posizione n in lst.
    # insert_at "alfa" 1 ["a"; "b"; "c"; "d"];;
    
    - : string list = ["a"; "alfa"; "b"; "c"; "d"]
    
    # insert_at "alfa" 3 ["a"; "b"; "c"; "d"];;
    
    - : string list = ["a"; "b"; "c"; "alfa"; "d"]
    
    # insert_at "alfa" 4 ["a"; "b"; "c"; "d"];;
    
    - : string list = ["a"; "b"; "c"; "d"; "alfa"]
    


    Soluzione: il file ese2

    [3] Si definisca una funzione OCaML range che prende due interi a e b e restituisce una lista contenenti tutti gli interi nell'intervallo da a a b.
    # range 4 9;;
    
    - : int list = [4; 5; 6; 7; 8; 9]
    
    # range 9 4;;
    
    - : int list = [9; 8; 7; 6; 5; 4]
    


    Soluzione: il file ese3

    [4] Si considerino gli alberi binari definiti a lezione <\font>
    # type tree=Empty| 
                Node of tree * int * tree;;
    - : type tree=Empty| 
                Node of tree * int * tree
    
    
    e per esempio
    # let t1=Empty;;
      let t2= Node(Node(Empty, 1, Empty),3, Empty);;
      let t3=Node(t2, 3, Node(Empty, 4, Node(Empty, 7, Empty)));;
    

    [5] Si definisca una funzione OCaML sum che prende un albero binario t e restituisce la somma degli elementi.

    [6] Si definisca una funzione OCaML nodes che prende un albero binario t e restituisce il numero dei nodi dellĠ albero.

    [6] Si definisca una funzione OCaML depth che prende un albero binario t e restituisce la lunghezza del cammino massimo.

    [7] Si definisca una funzione OCaML contains che prende un albero binario t ed un valore intero n e restituisce true se n eĠ contenuto in un nodo di t false altrimenti

    [8] Si definisca una funzione OCaML equals che prende due alberi binari t1 e t2 e restituisce true se t1 e t2 sono lo stesso albero false altrimenti

    [9] Si definisca una funzione OCaML subset che prende due alberi binari t1 e t2 e restituisce true se tutti i valori di t1 sono contenuti in t2 n false altrimenti

    [9] Si definisca una funzione OCaML subtree che prende due alberi binari t1 e t2 e restituisce true se t1 eĠ sottoalbero di t2 n false altrimenti

    [9] Si definisca una funzione OCaML toList che prende un albero binario t e restituisce una lista che contiene e i valori dei nodi dellĠalbero in ordine arbitario.

    [9] Si definisca una funzione OCaML incBy che prende un albero binario t ed una corrispondente lista di interi lst con n elementi (dove n corrisponde alla profondita di t). La funzione restituisce lĠ albero binario ottenuto da t, incrementando il valore dei nodi a livello i con il valore i-esimo nella lista.


Soluzione: il file ese4