Also ich bin mir hier relativ sicher, dass Du nicht verstanden hast, was der Code wirklich macht! Selbst durch das reine Lesen der Aufgabenstellung sollte man schon verstanden haben, dass der Rover sich vor und zurück bewegen kann (=> Bewegung im Sinne von Feld wechseln) und er sich einfach nur drehen kann (=> Kein Wechsel des Feldes).
Und genau das findet sich in dem Code ja dann auch.
Hast Du denn den Algorithmus mal mit Papier und Stift durchgespielt? Damit du verstehst, was da wirklich passiert? Das habe ich dir schon mindestens zwei mal geraten meine ich! Und wenn Du unsere Ratschläge nicht befolgen willst, dann müssen wir Dir die auch nicht weiter geben.
@All: Ich entführe jetzt den Thread jetzt mal etwas:
Beim Ansehen des Codes: Läuft es euch auch kalt den Rücken runter? Bei jeder Code Revision würde ich da ja richtig verhauen bei sowas.
Den Punkt mit dem Array als Key habe ich ja schon erwähnt, aber der Code, der den Rover bewegt, verändert den Key einer Collection.... Ok, das ändert hier ja ehh nichts, da ja HashCode und equals ehh nicht wirklich nutzbar sind (bzw. das Ändern des Arrays verändert den HashCode nicht). Aber das ist ein Pattern, das einen ja förmlich anschreit. Collections, welche auf HashCodes basieren, werden dadurch nicht mehr funktionieren, da der Key nun bei einem HashCode gespeichert ist, der nicht mehr dem HashCode des Keys entspricht.
Und ich frage mich, was hier hinter steckt. Ist das ein Professor, der keine Ahnung hat? Oder ist evtl. die Erwartungshaltung an die Studenten, die wirklich 100 Punkte kriegen wollen, dass diese Speicher-Problematik auch gesehen und angepasst wird?