Einzelnen Beitrag anzeigen

Lyan

Registriert seit: 5. Aug 2011
188 Beiträge
 
#1

"8 Puzzle" lösen mit A* Algo - "Neighbor function"

  Alt 21. Jun 2016, 12:29
Delphi-Version: 10 Seattle
Hallo,

bin vor kurzem nochmal auf den A*-Algorithmus gestoßen.
Wollte diesen verwenden um ein 8-Puzzle zu lösen.

Ich habe das Puzzle in einem Array vorliegen: 0 1 2 3 4 5 6 7 8

Bildlich so:

0 1 2
3 4 5
6 7 8


Die sogenannte Neighbor-function soll alle Nachbarn eines Array-Indexes ermitteln.
Nachbarn sind all die Zahlen, die ein Feld vertikal oder horizontal von dem Array-Index entfernt liegen.

Beispiel: Neighbors(4) würde die Zahlen 1,5,7,3 zurückliefern. Neighbors(6) würde hingegen 7, 3 zurückliefern.


Meine Funktion ist nicht so toll ich hätte lieber eine schöne Lösung, wenn möglich mit Operatoren/Mathematisch anstelle von vielen Prüfungen/if's etc.

Also gesucht ist eine schöne, einfache, kurze Implementation der Neighbor-function.


Vielen Dank im voraus

Geändert von Lyan (21. Jun 2016 um 12:59 Uhr)
  Mit Zitat antworten Zitat