Du befindest dich hier: FSI Informatik » Prüfungsfragen und Altklausuren » Prüfungen im Bachelor-Studium (1. - 5. Semester) » pfp » Forendiskussionen
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
Beide Seiten, vorherige ÜberarbeitungVorherige ÜberarbeitungNächste Überarbeitung | Vorherige ÜberarbeitungNächste ÜberarbeitungBeide Seiten, nächste Überarbeitung | ||
pruefungen:bachelor:pfp:loesungws13 [25.07.2015 14:23] – Variablennamen korrigiert Sense | pruefungen:bachelor:pfp:loesungws13 [05.08.2017 16:20] – Bsanchez | ||
---|---|---|---|
Zeile 40: | Zeile 40: | ||
Endbild | Endbild | ||
- | EDIT: ich glaube, in Stelle C soll kein Marke sein. | + | EDIT: ich glaube, in Stelle C soll kein Marke sein. |
+ | EDIT: Bin ich auch der Meinung. | ||
- | **d)** Nein | + | **d)** Nein (siehe Ablauf t3 -> t1 -> t1) |
**e)** e) S = {0, 1, 1}T ; M = {t1: {-1, 1, 0}, t2: {-1, 0, 1}, t3: {2, -1, -1} }T | **e)** e) S = {0, 1, 1}T ; M = {t1: {-1, 1, 0}, t2: {-1, 0, 1}, t3: {2, -1, -1} }T | ||
Zeile 51: | Zeile 52: | ||
activeFolderSearchers = new AtomicInteger(0); | activeFolderSearchers = new AtomicInteger(0); | ||
Thread t = new FolderSearcher(rootDir); | Thread t = new FolderSearcher(rootDir); | ||
- | t.start(); | + | |
+ | // incrementAndGet() muss vor dem Starten kommen! | ||
activeFolderSearchers.incrementAndGet(); | activeFolderSearchers.incrementAndGet(); | ||
+ | t.start(); | ||
+ | |||
//t.join(); | //t.join(); | ||
</ | </ | ||
Zeile 58: | Zeile 62: | ||
**b)** | **b)** | ||
<code java> | <code java> | ||
- | if(file.isDirectory){ | + | if(file.isDirectory()) { |
- | Thread t = new FolderSearcher(file); | + | Thread t = new FolderSearcher(file); |
- | activeFolderSearchers.incrementAndGet(); | + | activeFolderSearchers.incrementAndGet(); |
- | t.start(); | + | t.start(); |
- | } else { if(file.isFile()){ | + | } else if(file.isFile()) { |
- | pool.submit(new FileSearcher(file)); | + | pool.submit(new FileSearcher(file)); |
- | } | + | |
} | } | ||
</ | </ | ||
Zeile 70: | Zeile 73: | ||
**c)** | **c)** | ||
<code java> | <code java> | ||
- | activeFolderSearchers.decrementAndGet(); | + | int i = activeFolderSearchers.decrementAndGet(); |
- | if(activeFolderSearchers.get() | + | if(i == 0){ |
- | pool.shutdown(); | + | pool.shutdown(); |
} | } | ||
</ | </ | ||
Zeile 85: | Zeile 88: | ||
**b)** | **b)** | ||
< | < | ||
- | def fss: Int => Stream[(Int, | + | def fss: Int => Stream[(Int, |
</ | </ | ||
**c)** | **c)** | ||
< | < | ||
def count: (Int, Int) => Int = (n0, m) => fss(n0).take(m).foldLeft(0){ | def count: (Int, Int) => Int = (n0, m) => fss(n0).take(m).foldLeft(0){ | ||
- | (a, b) => if(b._1 > b._2) a+1 else a; | + | |
} | } | ||
</ | </ | ||
Zeile 130: | Zeile 133: | ||
+ | //was hat das hier verloren? ich vermute mal magicSquare aus Aud ? :D | ||
+ | ==== Aufgabe 7 (Backtracking) ==== | ||
+ | [[pruefungen: | ||
+ | |||
+ | **a)** | ||
+ | |||
+ | <code java> | ||
+ | static boolean isSolved(int[][] sq) { | ||
+ | int n = sq.length; | ||
+ | int checkSum = ((n * n * n) + n) / 2; | ||
+ | int rowSum = 0, colSum = 0, diag1Sum = 0, diag2Sum = 0; | ||
+ | |||
+ | for(int y= 0 ; y< n; y++){ | ||
+ | |||
+ | diag1Sum += sq[y][y]; | ||
+ | diag2Sum += sq[n-1-y][n-1-y]; | ||
+ | |||
+ | for(int x=0; x < n ; x++){ | ||
+ | rowSum += sq[y][x]; | ||
+ | colSum += sq[x][y]; | ||
+ | } | ||
+ | |||
+ | if(rowSum != checkSum || colSum != checkSum) | ||
+ | return false; | ||
+ | |||
+ | rowSum=colSum=0; | ||
+ | } | ||
+ | |||
+ | if(diag1Sum != checkSum || diag2Sum != checkSum) | ||
+ | return false; | ||
+ | |||
+ | return true; | ||
+ | } | ||
+ | |||
+ | </ | ||
+ | |||
+ | **b)** | ||
+ | |||
+ | <code java> | ||
+ | static boolean solve(int[][] sq, int pos, boolean[] used) { | ||
+ | int n = sq.length; | ||
+ | int col = pos % n; | ||
+ | int row = (pos - col) / n; | ||
+ | |||
+ | // Basisfall | ||
+ | if(isSolved(sq)) | ||
+ | return true; | ||
+ | |||
+ | // | ||
+ | for(int i=0; i < n*n; i++){ | ||
+ | if(!used[i]){ | ||
+ | used[i]=true; | ||
+ | int c=i+1; | ||
+ | sq[col][row]=c; | ||
+ | |||
+ | if(solve(sq, | ||
+ | return true; | ||
+ | |||
+ | sq[col][row]=0; | ||
+ | used[i]=false; | ||
+ | } | ||
+ | } | ||
+ | return false; | ||
+ | } | ||
+ | </ |