Du befindest dich hier: FSI Informatik » Prüfungsfragen und Altklausuren » Prüfungen im Bachelor-Studium (1. - 5. Semester) » aud » Forendiskussionen » codezuraufgabe5d   (Übersicht)

no way to compare when less than two revisions

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.


pruefungen:bachelor:aud:loesungss16:codezuraufgabe5d [03.04.2017 07:32] (aktuell) – angelegt Danplan
Zeile 1: Zeile 1:
 +<code java>
 +public class Jul16_ADT {
 +
 + public static void main(String[] args) {
 + LangtonAntJava ant=new LangtonAntJava();
 + System.out.println(ant.toString());
 + for(int steps=0; steps < 10; steps++){
 + ant.step();
 + System.out.println(ant.toString());
 + }
 + }
 +
 +}
 +class LangtonAntJava {
 + boolean[][] raster = new boolean[10][10];
 + int x = 5, y = 5, d = 0; // Position und Richtung
  
 + public void step() {
 + if(x < 0 || x >= raster.length || y < 0 || y >= raster.length )
 + return;
 +
 + boolean col=raster[x][y];
 + d=col?(d+1)%4:(d+3)%4;
 + raster[x][y]=!col;
 +
 + switch(d){
 + case 0:x--;break;
 + case 1:y--;break;
 + case 2:x++;break;
 + case 3:y++;break;
 + }
 +
 + }
 +
 + public String toString(){
 + String pos0="^";
 + String pos3=">";
 + String pos2="v";
 + String pos1="<";
 + String pos= d==0?pos0:d==1?pos1:d==2?pos2:pos3;
 + String res="";
 + for(int i=0; i < raster.length; i++){
 + for(int j=0; j < raster[i].length; j++){
 + boolean col=raster[i][j];
 +
 + if(i == x && j == y){
 + res +="| "+pos;
 + }else if(col){
 + res +="| #";
 + }else{
 + res +=" ";
 + }
 +
 + }
 + res +="|\n";
 + }
 + return res;
 +
 + }
 +}
 +
 +
 +
 +</code>