Advertisement
Guest User

Untitled

a guest
May 13th, 2018
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scala 2.82 KB | None | 0 0
  1. //Session 1 - 2013-14
  2. /*Question 1
  3. 1 - A
  4. 2 - B
  5. 3 - C
  6. 4 - A C
  7. 5 - B
  8. 6 - B C
  9. 7 - B C D
  10. 8 - A D     ?
  11.  
  12. Question 2*/
  13. def translationH(s : Scene3D, d : Double) : Scene3D = {
  14.     s match {
  15.         case Boite(a, b, c) => new Boite(new Position(a.x+d, a.y, a.z), b, c)
  16.         case Sphere(a, b) => new Sphere(new Position(a.x+d, a.y, a.z), b)
  17.         case Groupe(x) => new Groupe(x.map(translationH(_, d)))
  18.         case _ => null
  19.         }
  20.     }
  21.  
  22. def map(f : Scene => Scene, s : Scene3D) : Scene3D = {
  23.     s match {
  24.         case Groupe(x) => new Groupe(x.map(f))
  25.         case _ => f(s)
  26.         }
  27.     }
  28.  
  29. /*Question 3*/
  30. trait PosteTel {
  31.     protected var tel : String
  32.     protected var bureau : Bureau
  33.     def getBureau : Bureau
  34.     def setBureau(b: Bureau) : Unit
  35.     def getTel : String
  36.     def setTel(s : String) : Unit
  37.     }
  38.  
  39. trait Employe {
  40.     protected var nom : String
  41.     protected var bureau : Bureau
  42.     def getBureau : Bureau = this.bureau
  43.     def setBureau(b : Bureau)  : Unit {
  44.         require(b.listEmp.size<4)
  45.         setBureauImp(b) ensuring(b.getEmps.contains(this) && b.getEmps.size<=4)
  46.         }
  47.     def getTel : String ensuring(res => res == this.getBureau.getTel)
  48.     protected def setBureauImp(b : Bureau) : Unit
  49.     }
  50.  
  51. trait Bureau {
  52.     protected var nom : String
  53.     protected var posteTel : PosteTel
  54.     protected var listEmp : List[Employe]
  55.     def setPosteTel(p : PosteTel)  : Unit
  56.     def addEmploye(e : Employe)  : Unit
  57.     def getEmps : List[Employe]
  58.     }
  59.  
  60. /* Session 2 - 2013-14
  61. Question 1
  62. 1 - B C D E
  63. 2 - B C D
  64. 3 - B
  65. 4 - D
  66. 5 - A
  67. 6 - C
  68. 7 - B D
  69. 8 - B
  70.  
  71. Question 2
  72. 1 & 2 & 3 -
  73. 4 - */
  74.  
  75. sealed trait File{var nom : String; var parent : Repertoire}
  76. case class Fichier(var nom : String, var parent : Repertoire) extends File
  77. case object Fichier{def apply(nom : String, parent : Repertoire) = new Fichier(nom, parent)}
  78.  
  79. sealed trait Repertoire extends File {var nom : String; var parent : Repertoire; var children : List[File]}
  80. case class Dossier(var nom : String, var parent : Repertoire) extends Repertoire {
  81.     var children = List[File]()}
  82. case object Dossier{def apply(nom : String, parent : Repertoire) = new Dossier(nom, parent)}
  83.  
  84. case object Root extends Repertoire { var nom : String = "/"; var parent : Repertoire = Root; var children = List[File]()}
  85.  
  86. class System{
  87.     val root : Repertoire = Root
  88.     var current : Repertoire = root
  89.    
  90.     def ls : Unit = {
  91.         println(current.children.foldLeft("") {(x,y) => {
  92.             val n = y match {
  93.                 case Dossier(_,_) => y.nom + "[D]\t"
  94.                 case _ => y.nom + "\t"
  95.                 }
  96.             x + n
  97.             }
  98.         })
  99.     }
  100.    
  101.     def cd(s : String) : Unit = {
  102.         if(s == ".." && current != root) {current = current.parent}
  103.         else if (current.children.find(x => x.nom == s && x.isInstanceOf[Repertoire]) != None) { current = current.children.find(x => x.nom == s && x.isInstanceOf[Repertoire]).get.asInstanceOf[Repertoire] }
  104.         }
  105.    
  106.     def pwd : Unit = println(current.nom)
  107.  
  108.     }
  109.  
  110. /** EX 3 Idem que Session 1 **/
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement