Du befindest dich hier: FSI Informatik » Prüfungsfragen und Altklausuren » Prüfungen im Bachelor-Studium (1. - 5. Semester) » pfp » Lösungsversuch   (Übersicht)

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige ÜberarbeitungVorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
pruefungen:bachelor:pfp:loesungws14 [21.07.2018 17:59] evrenpruefungen:bachelor:pfp:loesungws14 [21.07.2018 19:41] (aktuell) evren
Zeile 114: Zeile 114:
   }   }
 </code> </code>
 +\\ 
 +(ich glaube im oberen Code ist ein barrier.await() zu viel) \\ 
 +Alternativlösung: \\ 
 +1: 
 +<code java> 
 +this.barrier = new CyclicBarrier(threads + 1); 
 +</code> 
 +\\ 
 +2: 
 +<code java> 
 +for (int i = 0; i < thread; i++) { 
 +    int end = start + step; 
 +    if (end >= array.length) end = array.length - 1; 
 +     
 +    (new CountingThread(start, end)).start(); 
 +     
 +    start = end + 1; 
 +    if (i != array.length - 1 && start >= array.length) { 
 +        threads = i; 
 +        barrier = new CyclicBarrier(i + 1); 
 +        break; 
 +    } 
 +
 +</code> 
 +\\ 
 +3: 
 +<code java> 
 +for (int i = 0; i < count.length; i++) globalCounts.addAndGet(i, count[i]); 
 +</code> 
 +\\ 
 +4 (nur oberes Feld): 
 +<code java> 
 +barrier.await(); 
 +</code> 
 +\\ 
 +\\
 ==== Aufgabe 5 (Scala - Listenoperationen) ==== ==== Aufgabe 5 (Scala - Listenoperationen) ====
 **a)** **a)**
-<code>+<code scala>
   def flatten : List[(Char, Char)] => List[Char] = {   def flatten : List[(Char, Char)] => List[Char] = {
       case Nil => List()       case Nil => List()
       case t :: ts => List(t._1, t._2) ::: flatten(ts)       case t :: ts => List(t._1, t._2) ::: flatten(ts)
   }   }
 +</code>
 +
 +Alternativlösung:
 +<code scala>
 +def flatten : List[(Char, Char)] => List[Char] = {
 +    case Nil => Nil
 +    case (a, b) :: tailList => a :: List(b) ::: flatten(tailList)
 +}
 </code> </code>
  
 **b)** **b)**
-<code>+<code scala>
   def countPar : List[Char] => List[(Char, Int)] = cs => {   def countPar : List[Char] => List[(Char, Int)] = cs => {
       for (c <- cs) yield (c, cs.par.filter(_ == c).size)       for (c <- cs) yield (c, cs.par.filter(_ == c).size)
Zeile 132: Zeile 175:
  
 **c)** **c)**
-<code>+<code scala>
   def distinct : List[(Char, Int)] => List[(Char, Int)] = cs => {   def distinct : List[(Char, Int)] => List[(Char, Int)] = cs => {
       cs.foldLeft(List[(Char, Int)]())((ls, c) => if (ls.contains(c)) ls else c :: ls)       cs.foldLeft(List[(Char, Int)]())((ls, c) => if (ls.contains(c)) ls else c :: ls)
Zeile 140: Zeile 183:
 ==== Aufgabe 6 (Scala - Lauflängenkodierung) ==== ==== Aufgabe 6 (Scala - Lauflängenkodierung) ====
 **a)** **a)**
-<code>+<code scala>
 def decodeTuple: ((Char, Int)) => Stream[Char] = { def decodeTuple: ((Char, Int)) => Stream[Char] = {
     case (c, 1) => Stream(c)     case (c, 1) => Stream(c)
Zeile 149: Zeile 192:
 **b)** **b)**
 Geht für ''decode(Stream())'' und ''decode(Stream( ('a', 3) )).toList'' kaputt: Geht für ''decode(Stream())'' und ''decode(Stream( ('a', 3) )).toList'' kaputt:
-<code>+<code scala>
 def decode: Stream[(Char, Int)] => Stream[Char] = { def decode: Stream[(Char, Int)] => Stream[Char] = {
     case null => Stream()     case null => Stream()
Zeile 155: Zeile 198:
 } }
 </code> </code>
-Alternativlösung+Alternativlösungen
-<code>+<code scala>
 def decode: Stream[(Char, Int)] => Stream[Char] = { def decode: Stream[(Char, Int)] => Stream[Char] = {
   case Stream.Empty => Stream.Empty   case Stream.Empty => Stream.Empty
   case ts => decodeTuple(ts.head) #::: decode(ts.tail)   case ts => decodeTuple(ts.head) #::: decode(ts.tail)
 +}
 +</code>
 +<code scala>
 +def decode: Stream[(Char, Int)] => Stream[Char] = {
 +    case Stream.Empty => Stream.Empty
 +    case first #:: tailList => decodeTuple(first) #::: decode(tailList)
 } }
 </code> </code>