Springerproblem-Implementierung funktioniert nicht richtig

boschl2000

Neues Mitglied
Hi Leute,
ich bin neu hier im Forum und hoffe mal, dass ihr mir vielleicht weiterhelfen könnt! :)
Ich möchte alle Lösungen des Springerproblems mit einem Algorithmus finden.
Orientiert habe ich mich am Backtracking, hier ist erstmal mein Code:

[CODE lang="java" title="Springer"]import java.util.ArrayList;
import java.util.List;

public class Knight {
private Square pos;

public Knight(Square pos) {
this.pos = pos;
}

public List<Square> getPossibleMoves(Chessboard chessboard) {
List<Square> reachableSquares = new ArrayList<Square>();
//Nach oben
int row = pos.getRow();
int column = pos.getColumn();
Square[][] matrix = chessboard.getBoardmatrix();
int size = chessboard.getSize();
//Nach oben
if (row - 2 >= 0) {
//oben links
if (column - 1 > 0) {
reachableSquares.add(matrix[row - 2][column - 1]);
}
//oben rechts
if (column + 1 < size) {
reachableSquares.add(matrix[row - 2][column + 1]);
}
}
//Nach links
if (column - 2 >= 0) {
//links oben
if (row - 1 >= 0) {
reachableSquares.add(matrix[row - 1][column - 2]);
}
//links unten
if (row + 1 < size) {
reachableSquares.add(matrix[row + 1][column - 2]);
}
}
//Nach unten
if (row + 2 < size) {
//unten links
if (column - 1 >= 0) {
reachableSquares.add(matrix[row + 2][column - 1]);
}
//unten rechts
if (column + 1 < size) {
reachableSquares.add(matrix[row + 2][column + 1]);
}
}
//Nach rechts
if (column + 2 < size) {
//rechts oben
if (row - 1 >= 0) {
reachableSquares.add(matrix[row - 1][column + 2]);
}
//rechts unten
if (row + 1 < size) {
reachableSquares.add(matrix[row + 1][column + 2]);
}

}

return reachableSquares;
}

public void move(Square square) {
this.pos = square;
}

public Square getPos() {
return pos;
}
}[/CODE]


[CODE lang="java" title="Schachbrett"]public class Chessboard {
private Square[][] boardmatrix;
private final int size;

public Chessboard(int size) {
this.size = size;
createBoardmatrix();
}

public void createBoardmatrix() {
boardmatrix = new Square[size][size];
for (int row = 0; row < size; row++) {
for (int column = 0; column < size; column++) {
boardmatrix[row][column] = new Square(row, column, size);
}
}
}
public void printMatrix(){
for (int row = 0; row < size; row++) {
System.out.println("\n");
for (int column = 0; column < size; column++) {
System.out.print(boardmatrix[row][column] + "\t");
}
}
}

public Square[][] getBoardmatrix() {
return boardmatrix;
}

public int getSize() {
return size;
}
}
[/CODE]
[CODE lang="java" title="Schachfeld"]public class Square {
private final int row;
private final int outputrow;
private final int column;

public Square(int row, int column, int size) {
this.row = row;
this.column = column;
this.outputrow=size-row;
}


public int getColumn() {
return column;
}

public int getRow() {
return row;
}


@Override
public String toString(){
String alphabet="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
StringBuilder output=new StringBuilder();
output.append(alphabet.charAt(column))
.append(outputrow);
return output.toString();
}
}[/CODE]

[CODE lang="java" title="Die (leider nicht funktionierende) Simulator-Klasse"]import java.util.ArrayList;
import java.util.List;

public class Simulator {
Chessboard chessboard;
Knight knight;
ArrayList<Square> solution;

public Simulator(int size, Square pos) {
this.chessboard = new Chessboard(size);
this.knight = new Knight(chessboard, pos);
solution = new ArrayList<>();
for (int i = 0; i < chessboard.getSize() * chessboard.getSize(); i++) {
solution.add(null);
}
System.out.println(solution.size());
int ebene = 0;
simulate(ebene);
}
public void simulate(int depth) {
//Fuer die erste Iteration
if(depth==0){
solution.set(depth,knight.getPos());
}
//falls alle Felder besucht sind
if (depth == chessboard.getSize() * chessboard.getSize() - 1) {
for (Square square : solution) {
System.out.print(square + " ");
}
System.out.println("\n");
} else {
List<Square> moves = knight.getPossibleMoves(chessboard);
//mache jeden moeglichen Zug
for (Square move : moves) {
//wenn Feld noch nicht besucht wurde
if (!solution.contains(move)) {
//naechste Stufe mit den erreichbaren Feldern
solution.set(depth + 1, move);
knight.move(move);
simulate(depth + 1);
//rueckgaengig machen, um alle Lsg. zu finden
for(int i=0;i<solution.size();i++){
if(i>=depth+1){
solution.set(i,null);
}
}
}
}
//falls keine Zuege mgl. sind Feld entfernen
solution.set(depth, null);
//wieder zurueck gehen
knight.move(solution.get(depth-1));
}
}
}
[/CODE]

In der Main-Methode habe ich
Java:
Simulator simulator=new Simulator(6,square1);
Aufgerufen.
Es gibt eine Ausgabe, aber das Programm beendet sich nicht und ruft die Lösungen mehrmals auf, bevor sich etwas verändert.
Vielen Dank schonmal, ich freue mich über jede Idee!
LG ^^
 

Barista

Top Contributor
Du bist Dir hoffentlich bewusst, dass Code-Analyse mehr Arbeit macht als selbst schreiben.

Ich empfehle Dir, eine konkrete, abgegrenzte Frage zu stellen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
L Unterschied zwischen List und LinkedList implementierung? Allgemeine Java-Themen 15
L rotateLeft implementierung Allgemeine Java-Themen 2
R In der Ausgabe sollte anstelle des obersten Sterns ein "+" stehen nur scheitere ich bei der Implementierung Allgemeine Java-Themen 9
D Input/Output Implementierung eines CommandHandlers/Parsers für viele Eingaben Allgemeine Java-Themen 26
Stonie Prüfen von direkter Implementierung eines Interfaces Allgemeine Java-Themen 7
S Mutable objects und Implementierung von ChangeEvents Allgemeine Java-Themen 5
W Queue Implementierung Allgemeine Java-Themen 6
C Ein Iterator ist eine Implementierung des Interface Iterable? Allgemeine Java-Themen 2
F Implementierung von Teilprogrammen [Java|Python] Allgemeine Java-Themen 7
I TimSort - Sortieralgorithmus - Erklärung und Pseudocode - Implementierung Allgemeine Java-Themen 2
L Implementierung eines AVT-Baums Allgemeine Java-Themen 2
ruutaiokwu burstsort-implementierung in java? Allgemeine Java-Themen 2
D Implementierung einer Mehrsprachigkeit, wichtig ? Allgemeine Java-Themen 5
D Implementierung einer Rechteverwaltung Allgemeine Java-Themen 2
A Implementierung eines Algorithmus (Farthest Insertion zur Lösung des TSP) in O(n²) Allgemeine Java-Themen 2
R "Countdown" Implementierung Allgemeine Java-Themen 5
K A*-Implementierung flexibler machen Allgemeine Java-Themen 4
J Java-Implementierung diverser Beziehungen zwischen Klassen bzw. Objekten Allgemeine Java-Themen 2
S BlueJ Cäsar-Implementierung Allgemeine Java-Themen 6
S Implementierung Programmneustart Allgemeine Java-Themen 10
R Implementierung eines Interface durch 2 verschiedene Klassen Allgemeine Java-Themen 6
G Implementierung einer Kommunikation Allgemeine Java-Themen 7
S Implementierung einer PluginArchitektur Allgemeine Java-Themen 5
A OOP: Überschreiben/Implementierung von Methoden Allgemeine Java-Themen 5
K Objekt einer konkreten Implementierung eines Interfaces durch übergebenen String Allgemeine Java-Themen 2
R Intervall-Implementierung mit selbstgebauter LinkedList Allgemeine Java-Themen 7
J Best Practice für implementierung von equals(...) Allgemeine Java-Themen 7
Kr0e Eigene RMI Implementierung Allgemeine Java-Themen 3
V Wie finde ich die konkrete Implementierung? Allgemeine Java-Themen 8
G Implementierung vom AKS-Test Allgemeine Java-Themen 11
R software implementierung Allgemeine Java-Themen 3
N Observer/Observable der JAVA-API od. eigene Implementierung Allgemeine Java-Themen 2
K Design / Implementierung Allgemeine Java-Themen 5
B jre browser implementierung ? Allgemeine Java-Themen 4
B Elegantere Lösung bei der Implementierung eines Interfaces Allgemeine Java-Themen 2
G Klasse Queue Implementierung in Java Allgemeine Java-Themen 4
G Eigene PrintService Implementierung. Allgemeine Java-Themen 5
V Wie funktioniert das Schlüsselwort "final" von Java? Allgemeine Java-Themen 19
M Apache Proxy Weiterleitung auf Tomcat funktioniert nicht wie gewünscht Allgemeine Java-Themen 1
W While Schleife funktioniert nicht ganz Allgemeine Java-Themen 4
H do-while Schleife funktioniert nicht wie ich es möchte Allgemeine Java-Themen 7
ERlK JDA Code funktioniert nicht? Allgemeine Java-Themen 4
B HeapSort für Array of Strings funktioniert nur teilweise Allgemeine Java-Themen 3
stormyark TikTakToe funktioniert nicht Allgemeine Java-Themen 10
T Remove bei ArrayList funktioniert nicht Allgemeine Java-Themen 2
M Map<String,String>funktioniert nicht richtig Allgemeine Java-Themen 4
P String.replace() funktioniert nicht? Allgemeine Java-Themen 3
F Getter Methode aufrufen funktioniert nicht Allgemeine Java-Themen 1
N Regulärer Ausdruck funktioniert nicht Allgemeine Java-Themen 6
Lukas2904 Wie funktioniert ein KeyLogger? Allgemeine Java-Themen 3
Tobero Meine Funktion für das beinhalten eines Punktes in einem Kreis funktioniert nicht Allgemeine Java-Themen 5
1Raini Java if-Abfrage funktioniert nicht! Allgemeine Java-Themen 3
Killunox MaxHeap Zuweisung unter Linux funktioniert nicht Allgemeine Java-Themen 1
I Wieso funktioniert das nich? Allgemeine Java-Themen 5
Dann07 MP3 Datei abspielen funktioniert nicht Allgemeine Java-Themen 6
O Aus JAR-Datei erstellte EXE-Datei funktioniert nicht Allgemeine Java-Themen 10
A Mp3 Player funktioniert nicht Allgemeine Java-Themen 0
X JNA funktioniert nicht mehr Allgemeine Java-Themen 4
bueseb84 FolderWatcher mit WatchService funktioniert nur bedingt Allgemeine Java-Themen 5
Drachenbauer Division mit Int funktioniert nicht Allgemeine Java-Themen 3
O docx-Datei erzeugung mit DocXStamper funktioniert nicht Allgemeine Java-Themen 2
F Schleife funktioniert nicht richtig Allgemeine Java-Themen 13
T Split() Methode funktioniert nicht?! Allgemeine Java-Themen 11
L Tesseract-OCR 4.0 unter Linux funktioniert nicht Allgemeine Java-Themen 3
J Wie konkret funktioniert das Modulsystem unter Java 11? Allgemeine Java-Themen 4
J Neuronales Netz funktioniert mal und mal nicht. Allgemeine Java-Themen 3
T Umlaute in Eclipse einlesen funktioniert nicht Allgemeine Java-Themen 16
A Methodenaufruf funktioniert nicht richtig Allgemeine Java-Themen 5
C WindowBuilder Design funktioniert nicht Allgemeine Java-Themen 0
J FTPSClient funktioniert nicht Allgemeine Java-Themen 4
H IDEA IntelliJ Java Mail funktioniert nach Export nicht mehr! Allgemeine Java-Themen 1
M Operatoren Warum funktioniert diese überprüfung nicht? Allgemeine Java-Themen 7
R jar-Datei funktioniert nicht Allgemeine Java-Themen 2
E Open Declaration Funktioniert nicht Allgemeine Java-Themen 0
R Verschlüsselung funktioniert nicht Allgemeine Java-Themen 5
RalleYTN requires transitive funktioniert nicht? Allgemeine Java-Themen 7
R Bruteforce hashes mit multithreading. Funktioniert das so? Allgemeine Java-Themen 0
P Best Practice Wieso funktioniert der Modulo - Operator nicht? Allgemeine Java-Themen 2
HarleyDavidson Eigener PropertyChangeListener funktioniert einfach nicht Allgemeine Java-Themen 3
J Exclude funktioniert nicht Allgemeine Java-Themen 2
K .jar funktioniert nicht vollständig Allgemeine Java-Themen 1
P Java https proxy (-Dhttps.proxyHost) Start-Parameter funktioniert nicht? Allgemeine Java-Themen 2
L Auswertung eines Testes funktioniert nicht Allgemeine Java-Themen 37
O Fahrenheit/Celsius Converter funktioniert nicht Allgemeine Java-Themen 2
M Serialisierung funktioniert nicht Allgemeine Java-Themen 9
D Collections.sort funktioniert nicht in exportierten .class Dateien Allgemeine Java-Themen 10
J Arrays auf gleichheit untersuchen funktioniert nicht Allgemeine Java-Themen 11
P GUI: ArrayList anzeigen funktioniert nicht Allgemeine Java-Themen 5
H Timer funktioniert nicht? Allgemeine Java-Themen 3
R javax.comm --> Programm funktioniert nach Export nicht mehr Allgemeine Java-Themen 0
O Mein JButton Array funktioniert nicht Allgemeine Java-Themen 3
R Erste Schritte Object reference funktioniert nicht. Wie mach ichs richtig? Allgemeine Java-Themen 3
J If Abfrage funktioniert nicht Allgemeine Java-Themen 4
R Objekt funktioniert nicht auf iOS Allgemeine Java-Themen 15
U PersistenceManager.createEntityManager funktioniert nicht Allgemeine Java-Themen 3
D Java Datei nach Eclipse Export funktioniert nicht Allgemeine Java-Themen 0
M Eigene forEach()-Methode funktioniert nicht. Allgemeine Java-Themen 2
H File.listFiles() funktioniert nicht... Allgemeine Java-Themen 10
JG12111989 Auswertung von Fragebogen funktioniert nicht! Allgemeine Java-Themen 7
M Primzahlberechnung funktioniert nicht. Allgemeine Java-Themen 4

Ähnliche Java Themen

Neue Themen


Oben