From ef0ac4f910777117a225d567b68b3802759cd3e3 Mon Sep 17 00:00:00 2001
From: "joel.vonderwe" <joel.von-der-weid@etu.hesge.ch>
Date: Thu, 5 Mar 2020 15:50:36 +0100
Subject: [PATCH] Collect exos improvments

---
 base_tp/.gitignore                   |  1 +
 base_tp/src/collection/collect.scala | 19 +++++++++----------
 2 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/base_tp/.gitignore b/base_tp/.gitignore
index 382c6d7..c87f0fb 100644
--- a/base_tp/.gitignore
+++ b/base_tp/.gitignore
@@ -1,3 +1,4 @@
 *~
 
 target/
+.metals/
\ No newline at end of file
diff --git a/base_tp/src/collection/collect.scala b/base_tp/src/collection/collect.scala
index acff4ff..587a89b 100644
--- a/base_tp/src/collection/collect.scala
+++ b/base_tp/src/collection/collect.scala
@@ -37,17 +37,19 @@ object Collect {
 
   /* Retourne la liste de morceaux associés à un artiste */
   def tracksOf( artist: String ): List[Track] = {
-    albums.filter(_.artist == artist).flatMap( a => tracks(a.title))
+    albums.flatMap( a => if (a.artist == artist) tracks(a.title) else List())
   }
 
   /* Retourne la liste de tous les morceaux de moins de 4 minutes */
   def shortTracks: List[Track] = {
-    tracks.flatMap(t => t._2).filter(t => t.duration.minutes < 4).toList
+    tracks.flatMap {
+      case (_,t) => t.filter(t => t.duration.minutes < 4)
+    }.toList
   }
 
   /* Retourne les titres des morceaux antérieurs à une année */
   def titlesBefore( year: Int ): List[String] = {
-    albums.flatMap(a => if (a.year < year) tracks(a.title) else List()).map(_.title)
+    albums.flatMap(a => if (a.year < year) tracks(a.title).map(_.title) else List())
   }
 
   /* Calcule la durée totale de tous les morceaux disponibles.
@@ -55,12 +57,9 @@ object Collect {
      minutes peuvent dépasser ce total.
    */
   def totalDuration: Duration = {
-    var m = 0
-    var s = 0
-    tracks.flatMap(_._2).foreach(t => {
-      m += t.duration.minutes
-      s += t.duration.seconds
-    })
-    Duration(m + s/60, s % 60)
+    val s = tracks.flatMap(_._2.map(t => {
+      t.duration.seconds + t.duration.minutes*60
+    })).sum
+    Duration(s/60, s % 60)
   }
 }
-- 
GitLab