Hey Leute,
ich wollte ein Programm schreiben, dass folgendes Problem mit Backtracking löst:
Ich wollte als erstes diesen Irrgarten aus einer TXT-Datei einlesen:
(Bitte aus der PDF entnehmen)
Die Zeichen „ -„ und „ |“ stellen die Mauern dar.
Der Code dafür ist von der Uni wie folgt gegeben:
Am Ende soll so etwas herauskommen:
(Bitte aus der PDF entnehmen)
Ich habe mir überlegt, dass ich als erstes die Klasse „Weg“ anlege und dann in etwa so vorgehen will:
- Gestartet wird bei „S“
- Danach soll ein Punkt entweder nach links, rechts, oben oder unten gesetzt werden, je nachdem, wo keine Mauer ist. Der Pointer soll an die Stelle, wo der Punkt gesetzt wird.
- Das soll er solange machen, bis er entweder bei „Z“ ist, oder an einer Stelle landet, wo eine Sackgasse ist
- Wenn er „Z“ erreicht hat, soll das Programm beendet werden.
- Wenn er an einer Stelle landet, wo in drei Richtungen eine Mauer ist und in einer Richtung ein Punkt, soll er den aktuellen Punkt mit einem „x“ überschreiben und die Visibility auf false setzen. „X“-Stellen sollen wie Mauern betrachtet werden. Wenn es keinen Weg von „S“ nach „Z“ gibt, soll er mir eine entsprechende Meldung ausgeben.
Aber: Wie sage ich dem Programm sinnvoll, wo es lang gehen soll? Setze ich da die Befehle „links“ „rechts“, „hoch“ und „runter“ auf random, oder ist das Schwachsinn?
Und was sagt ihr zu meiner geplanten Vorgehensweise? Sieht das okay aus? Ich sende euch anbei auch mal die PDF-Datei mit der Aufgabe (Letzte Aufgabe). Außerdem hänge ich noch ein Bild an, welches das Labyrinth noch mal in etwa zeigt (ich finde, dass man bei der TXT-Datei teilweise nur schwer erkennt, wo eine Mauer ist und wo man lang kann):
http://www.ips.tu-braunschweig.de/struckmann/prog12/blatt07.pdf
http://img547.imageshack.us/img547/7804/backtracking.jpg
Ich wäre für jede Hilfe dankbrar
Viele Grüße
NikeAir22
ich wollte ein Programm schreiben, dass folgendes Problem mit Backtracking löst:
Ich wollte als erstes diesen Irrgarten aus einer TXT-Datei einlesen:
(Bitte aus der PDF entnehmen)
Die Zeichen „ -„ und „ |“ stellen die Mauern dar.
Der Code dafür ist von der Uni wie folgt gegeben:
Java:
import java.io.*;
import java.util.Scanner;
public class Test {
public static void main(String args[]) {
try {
FileInputStream file = new FileInputStream("a.txt");
Scanner s = new Scanner(file);
while (s.hasNextLine()) {
String line = s.nextLine();
System.out.println(line);
}
file.close();
} catch (IOException e) {
System.out.println("Fehler");
}
}
}
Am Ende soll so etwas herauskommen:
(Bitte aus der PDF entnehmen)
Ich habe mir überlegt, dass ich als erstes die Klasse „Weg“ anlege und dann in etwa so vorgehen will:
- Gestartet wird bei „S“
- Danach soll ein Punkt entweder nach links, rechts, oben oder unten gesetzt werden, je nachdem, wo keine Mauer ist. Der Pointer soll an die Stelle, wo der Punkt gesetzt wird.
- Das soll er solange machen, bis er entweder bei „Z“ ist, oder an einer Stelle landet, wo eine Sackgasse ist
- Wenn er „Z“ erreicht hat, soll das Programm beendet werden.
- Wenn er an einer Stelle landet, wo in drei Richtungen eine Mauer ist und in einer Richtung ein Punkt, soll er den aktuellen Punkt mit einem „x“ überschreiben und die Visibility auf false setzen. „X“-Stellen sollen wie Mauern betrachtet werden. Wenn es keinen Weg von „S“ nach „Z“ gibt, soll er mir eine entsprechende Meldung ausgeben.
Aber: Wie sage ich dem Programm sinnvoll, wo es lang gehen soll? Setze ich da die Befehle „links“ „rechts“, „hoch“ und „runter“ auf random, oder ist das Schwachsinn?
Und was sagt ihr zu meiner geplanten Vorgehensweise? Sieht das okay aus? Ich sende euch anbei auch mal die PDF-Datei mit der Aufgabe (Letzte Aufgabe). Außerdem hänge ich noch ein Bild an, welches das Labyrinth noch mal in etwa zeigt (ich finde, dass man bei der TXT-Datei teilweise nur schwer erkennt, wo eine Mauer ist und wo man lang kann):
http://www.ips.tu-braunschweig.de/struckmann/prog12/blatt07.pdf
http://img547.imageshack.us/img547/7804/backtracking.jpg
Ich wäre für jede Hilfe dankbrar
Viele Grüße
NikeAir22
Zuletzt bearbeitet: