Du befindest dich hier: FSI Informatik » Prüfungsfragen und Altklausuren » Prüfungen im Bachelor-Studium (1. - 5. Semester) » aud » Forendiskussionen   (Ü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:aud:loesungss16 [02.07.2018 12:32] aud123pruefungen:bachelor:aud:loesungss16 [25.03.2020 10:18] (aktuell) kat04
Zeile 183: Zeile 183:
 <code java> <code java>
         public E previous() {         public E previous() {
- // TODO Auto-generated method stub 
  if(prev != null){  if(prev != null){
  E vTmp=prev.v;  E vTmp=prev.v;
Zeile 243: Zeile 242:
  
 ==== Aufgabe 5 ADT ==== ==== Aufgabe 5 ADT ====
-**a) ** +
-  getCol(Step(l), x, y) = NOT(getCol(l,x,y) falls x=l.getX && y=l.getY +
-  getCol(Step(l), x, y) = getCol(l, x, y) sonst+
      
- **b) ** + **a) ** 
-  getDir(Step(l)) = (d+3)%4 falls getCol(l,x,y) = false +<code java> 
-  getDir(Step(l)) = (d+1)%4 sonst+  getCol(Step(l), x, y) = NOT(getCol(l,x,y), falls x getX(l) && y = getY(l) 
 +  getCol(Step(l), x, y) =     getCol(l,x,y)sonst 
 +</code>
      
-  Obige Lösung ist mMn falsch, dem Aufruf werden kein d, kein x und kein y mitgegeben. Meine (womöglich immer noch falscheLösung: + **b** 
-   +<code java>   
-  getDir(Step(l)) = (getDir(l)+3)%4 falls getCol(l, getX(l), getY(l)) == false +  getDir(Step(l)) = (getDir(l) + 3) % 4falls getCol(l, getX(l), getY(l)) == false 
-  getDir(Step(l)) = (getDir(l)+1)%4 sonst +  getDir(Step(l)) = (getDir(l) + 1) % 4sonst 
 +</code>
            
  **c) **  **c) **
-  getX(Step(l)) = getX(l) + 1 falls (getDir == 0 & getCol(l,x,y) == false) || (getDir == 2 & getCol(l,x,y) == true) +<code java> 
-  getX(Step(l)) = getX(l) - 1 falls (getDir == 0 & getCol(l,x,y== true|| (getDir == 2 & getCol(l,x,y) == false) +  getX(Step(l)) = getX(l) + 1falls getDir(Step(l)) == 1 // + und - vertauscht? 1 Westenalso nach links also -1 
-  getX(Step(l)) = sonst+  getX(Step(l)) = getX(l) - 1falls getDir(Step(l)) == 3 //wie oben nur umgekehrtauch in den Bildern zu sehen 
 +  getX(Step(l)) = getX(l), sonst  
 +</code>  
      
-  Gleiches wie obenWas soll x, y seinWarum wird getDir ohne Parameter aufgerufen? Meine (evtl ebenfalls falsche) Lösung: + ** d) ** 
-  getX(Step(l)) = getX(l) + 1 falls getDir(Step(l)) == 1 +<code> 
-  getX(Step(l)) = getX(l) 1 falls getDir(Step(l)) == 3 +BeachteDas Koordinatensystem ist nach unten geklapptd.h. die y-Werte drehen sich bei den Blickrichtungen Norden/Sueden um.  
-  getX(Step(l)) = getX(l) sonst  +Wo steht dasReine Interpretationssache. Das Raster im Bild ist nach oben auch positiv... 
-   + 
-  **d) ** +---------> x 
-<code java> +| 
 +| 
 +
 +
 +</code> 
 +<code java>
           public class LangtonAntJava{           public class LangtonAntJava{
                boolean[][] raster = new boolean[4711][4242];                boolean[][] raster = new boolean[4711][4242];
Zeile 280: Zeile 286:
                    raster[x][y] = !raster[x][y];                    raster[x][y] = !raster[x][y];
                    if(d == 0){                    if(d == 0){
-                       y -= 1;+                       y -= 1; 
                    } else if (d == 1){                    } else if (d == 1){
-                       x += 1;+                       x += 1;    // muesste hier nicht x -= 1 stehen, da Blickrichtung nach Osten? Stimme dem zu. Autor kennt, wie bei c) schon erwähnt, die Himmelsrichtungen nicht.
                    } else if (d == 2){                    } else if (d == 2){
-                       y += 1;+                       y += 1; 
                    } else if (d == 3){                    } else if (d == 3){
-                       x -= 1;+                       x -= 1;    // muesste hier nicht x += 1 stehen, da Blickrichtung nach Westen? 
                    }                    }
                }                }
Zeile 342: Zeile 348:
  abDiff-=2*(a.get(p));  abDiff-=2*(a.get(p));
  b.add(a.remove(p));  b.add(a.remove(p));
- helfer(p);+ helfer(p); //sollte hier nicht auch p+1 stehen? sonst mach ich den gleichen Schritt nochmal // Nein, da ja der aktuelle Wert der Stelle P entfernt wird, wenn du jetzt p +1 machen würdest, würdest du einen Wert überspringen 
  
  // Backtracking zur 2. Rekursion:  // Backtracking zur 2. Rekursion: