Brauche zu diesem Labyrinth ein Skript? Der Hamster soll im Urzeigersinn das ganze Labyrinth abgehen und wieder an seinem Ursprungsplatz sein.

Hmm, ich kenne Dich nicht, daher kann ich dir nicht sagen, ob du ein Skript brauchst.

Sorry, aber evtl. sagst du uns einfach erst mal etwas mehr: Mit welcher Umgebung sollst du was genau machen? Und vor allem: was hast du schon alles probiert und wo kommst du nicht weiter?
 
ich bräuchte ein skript zu diesem Labyrinth und wie ich gesgat habe soll der Hamste den Weg gehen wie oben geschrieben. Habe das Skript nicht angefangen
 
Hast du dir denn mal überlegt, wie der Hamster dann gehen müsste? Das wäre der erste Schritt: Verstehen wie es funktionieren soll ...

Das kannst Du dann in Worten formulieren. Dazu überlegen, wie Du es einem Außenstehenden erklären müsstest, damit er den Hamster entsprechend steuert ...

Wenn du es dann so ausgearbeitet hast, kannst du es einfach in Java übersetzen ....
 
Wenn vorne keine Wand, vorwärts.
Wenn vorne und rechts eine Wand, nach links.
Wenn vorne und links eine Wand, nach rechts.
Wenn vorne eine Wand und links und rechts keine Wand, umdrehen oder beliebige Richtung.
Funktioniert das?

Soll das ganze Labyrinth abgelaufen werden, oder nur an den Wänden entlang? Soll der kürzeste Weg zurück gewählt werden?
 
Im Uhrzeigersinn abgehen bedeutet aber:
- wenn rechts keine Wand, dann rechts drehen.
- Wenn vorne eine Wand, dann rechts drehen, sonst Schritt nach vorne.

Aber das sind Dinge, die der TE eigentlich heraus finden sollte ... warum muss man da so vergreifen? Ist das noch Dein Niveau, auf dem Du üben musst?
 
Ohne da zu viel verraten zu wollen: das sehe ich ein klein wenig anders - aber dazu darf sich der TE Gedanken machen 🙂
Würde mich interessieren, was Dich daran stört. Stört Dich, dass er ggf Felder in der Mitte nicht abgeht? Oder fehlt dir das Links drehen? Spiel es durch - bei dem Algorithmus dreht er dann halt drei mal rechts (so es keine Sackgasse war) ...

Aber ok, gedulde ich mich etwas ...
 
Wenn vorne keine Wand, vorwärts.
Wenn vorne und rechts eine Wand, nach links.
Wenn vorne und links eine Wand, nach rechts.
Wenn vorne eine Wand und links und rechts keine Wand, umdrehen oder beliebige Richtung.
Funktioniert das?
Der erste Schritt darf nicht der erste Schritt sein, auch wenn es durch die Enge des Labyrinths in diesem Fall möglicher Weise funktioniert. Angenommen du bist bei einer inneren Ecke, dann wirst du einfach zur gegenüberliegenden Seite laufen.
 
Zuletzt bearbeitet:
Ich habe auch mal das Hamstermodell ausprobiert und bei ging es nicht. Dann habe ich Hamsterlight probiert und das ging. Ist es eigentlich so, dass man keine Befehle in die Programme reinkopieren kann, also alles selbst schreiben muss?
 
du wirst sehr wahrscheinlich die tiefen suche bzw die breiten suche brauchen ... ein ähliches spiel dazu heist "finde den Käse" womit das gelehrt wird
 
nicht, wenn sich mittels Rekursion der Weg gemerkt wird 😉
das liegt ja in der natur der sache, ansonsten bist du ewig drin

du musst dir merken ob das feld abgelatscht wurde in nosw auf die bereits gelatschten felder brauchst du ja nicht gehen
wenn du aber nicht weiter kommst gehst 1 feld zurück in der rekursion
und schaust wieder ob nosw noch ein feld hat zum durch latschen

usw und irgendwann findest du das ziel oder das ziel ist nicht erreichbar
hier gibts sogar ein beispiel wo du einen irrgarten mit der tiefensuche erzeugen kannst
 
neeeeeeeeee, der Hamster dreht sich immer einmal nach links (oder rechts) und geht, wenn er das Feld noch nicht besucht hat und dort keine Wand ist, vor
 
du musst aber eine reihenfolge haben oder willst du es mit new Random(3) machen? und ausprobieren wo er noch hinlatschen kann
 
Moin @Mart
Also, es geht auch ohne Orientierung, aber es müssen 3 Voraussetzungen geschaffen werden:
- Der Hamster muss sich mittels Rekursion den Weg merken,
- der Hamster muss auf ein besuchtes Feld ein Korn ablegen,
- der Hamster braucht 1000 Körner im Maul (diese müssen vorher eingestellt werden, eine Methode dafür hab ich nicht gefunden).

Java:
void main() {
    // koerner = 1000;
    lauf();
}

void lauf() {
    gib();
    for (int i=0; i<4; i++) {
        linksUm();
        if (vornFrei()) {
            vor();
            if (!kornDa()) {
                lauf();
            }
            laufZurueck();
        }
    }
}

void laufZurueck() {
    linksUm();
    linksUm();
    vor();
    linksUm();
    linksUm();
}

Und die spannende Frage wäre jetzt natürlich, was passieren würde wenn er eine Orientierung hätte...
 
Sagt mal, die Lösung ist doch oben in den Kommentaren 7 bis 14 längst gegeben, oder verstehe ich gerade etwas falsch?
 
@NullCharm Schaffst Du es selbst, den Begriff Monolog nachzuschlagen oder soll das einer für Dich übernehmen?
Oder ist das nur eine Art "Manager Übung": Mögliche Buzzwords ohne Sinn und Verstand nutzen?
(Das wäre Dir dann gut gelungen)
 
ich würde einen kneitzelschen Monolog nicht als Lösung ansehen 😉 in der Regel versteht man darunter Code 😀
also da muss ich intervenieren ... @kneitzel hat mich in einem anderen java post auch 4 oder 5 mal das erklärt mit maven bis ich es gerafft hab
und das denke ich macht kneitzel auch gern nur die leute hier im forum sind keine free lancer um anfänger projekte fertig zu machen und wenn ja wirds sehr teuer 😉
 
Jetzt bleibt mal locker, das war ja kein angriff, aber Code habe ich in 7 bis 14 dennoch nicht gesehen...
weil die meisten hier erfahrene programmierer sind bzw frisch mit studium fertig und der sinn ist es nicht die lösung hinzuballern

der sinn ist es dich vorzubereiten dass du auch mal leuten im java forum helfen kannst 😉
 
Jetzt bleibt mal locker, das war ja kein angriff,
Also ich bin durchaus locker und bezüglich Angriff ist es mir relativ egal. Es ändert nur nichts daran, dass bei den Posts 3 Personen involviert waren, zwei davon im direkten Dialog. Daher ist der Begriff Monolog für mich nicht nachvollziehbar.

Und was den Code angeht: Es ist trivial, mal eben zu einer Aufgabe eine Lösung zu schreiben. Die meisten Probleme hier kommen von Anfängern - Somit ist es keinerlei Herausforderung. Jetzt könnte man darüber nachdenken: Wieso machen die das nicht einfach? Statt 5 Minuten für paar Zeilen Code setzten die sich hin und schreiben deutlich länger an irgendwelchen Texten? Und suchen noch Links heraus und und und ...

Was ist denn hier im Forum die Herausforderung? Doch wohl nicht, dass ich eine (Schul- oder Erstsemester) Aufgabe lösen kann. Die Herausforderung, die es zu lösen gilt: Der TE soll lernen, so Aufgaben selbst erledigen zu können. Der TE soll weiter kommen. Und das ist eben nicht wirklich die Lösung der Aufgabe. Die Hausaufgabe ist ja streng genommen auch nur eine Lernkontrolle / Vertiefung des Wissens.

Aber das nur einmal kurz als ein Monolog von mir (Monolog = Ich rede, keine Erwiderung notwendig. Wenn Du antwortest, dann machst Du es zu einem Dialog. Das ist nicht das, was ich will. Aber natürlich steht es Dir frei.)
 
Was irgendwie witzig ist: Hier wird dieses Thema mit einer Frage, nach Monaten, neu belebt und alle Antworten darauf gehen, soweit ich es jetzt überflogen habe, völlig an der Frage vorbei.

Ist es eigentlich so, dass man keine Befehle in die Programme reinkopieren kann, also alles selbst schreiben muss?

Sorry @brypa, ich kann dir leider darauf nicht antworten, weil ich es nicht weiß (eigentlich nicht mal, was du genau meinst).
 
Naaaa die Lösung steht in 28 😉 Danach folgte der kneitzelsche Grabenkampf...
Es sollte doch klar sein, wer hier immer am stänkern und Herausfordern ist. Sorry, aber merkst Du nicht, wie kindisch dieses Verhalten ist? Vor allem: beim kleinsten Widerwort ruderst Du sofort zurück a.la.
Jetzt bleibt mal locker, das war ja kein angriff, aber Code habe ich in 7 bis 14 dennoch nicht gesehen...

Sorry, aber das ist doch einfach nur armselig, was Du hier ablieferst.
 

Zurück
Oben