uniroma1.E*Main.scala.cognome.nome. Sulle postazioni del laboratorio sarà /home/studente/Desktop/cognome.nome/.cognome.nome.zip (zip -r cognome.nome.zip cognome.nome/).cognome.nome.zip.Per maggiori informazioni fate riferimento al regolamento delle esercitazioni.
Scrivere nel file E1.scala un metodo currificato def buildMatrix(rows:Int, cols:Int)(f:(Int,Int) => Double):Vector[Vector[Double]]
che restituisce una matrice di Double con rows righe e cols colonne dove f(i,j) descrive il contenuto della cella (i,j).
Più precisamente, il metodo restituisce un Vector[Vector[Double]] v tale che per ogni i in [0,rows-1] e per ogni j in
[0,cols-1] si ha v(i)(j) == f(i,j).
Usare il main di prova nella directory di lavoro E1. Non modificare alcun file tranne E1.scala.
Scrivere nel file E2.scala una versione parallela fibPar del seguente metodo ricorsivo fib definito nel file Fib.scala usando fork-join in Scala mediante il costrutto par. La soluzione deve assumere la presenza di 2 core nella CPU.
def fib(a:Int, b:Int)(n:Int):Long =
if (n < 2) a
else if (n == 2) b
else fib(a,b)(n-1) + fib(a,b)(n-2)
Usare il main di prova nella directory di lavoro E2, mettendo sulla riga di comando tutti i file Scala forniti. Non modificare alcun file tranne E2.scala.
Scrivere nel file E3.scala un metodo def subList(l:List[T]):Boolean applicabile su un oggetto List[T] s che restituisce true se e solo se tutti gli elementi di l appaiono anche in s nello stesso ordine, anche non consecutivamente.
Usare il main di prova nella directory di lavoro E3. Non modificare alcun file tranne E3.scala.
Scrivere nel file E4.scala un metodo piuGiovane che, dato un Vector s di oggetti Studente(id, nome) e un Vector e di oggetti Eta(id, eta), restituisce un Option[String] che vale None se s è vuoto e Some(x), dove x è il nome dello studente più giovane, altrimenti. Si assuma che ogni id contenuto in s sia anche contenuto in e. Gli id sono unici in ciascuna collezione e servono come chiave primaria in s e in e.
Usare il main di prova nella directory di lavoro E4. Non modificare alcun file tranne E4.scala.