Prolog: das Finden der N-te Element einer Liste

Ich bin versucht, suchen das N-te element einer Liste in Prolog. Hier ist der code, den ich bin versucht zu verwenden:

Cells = [OK, _, _, _, _, _] .

...

next_safe(_) :-
facing(CurrentDirection),
delta(CurrentDirection, Delta), 
in_cell(OldLoc), 
NewLoc is OldLoc + Delta,
nth1(NewLoc, Cells, SafetyIdentifier),
SafetyIdentifier = OK .

Grundsätzlich bin ich versucht, zu überprüfen, ob eine gegebene Zelle ist "OK", um in zu bewegen. Bin ich etwas fehlt?

  • nth1/3 - ist das zählen von "1" (nicht von "0" als üblich). Ist das dein problem? BTW, Sie versuchen, zu vereinheitlichen Sicherheit zu verschieben mit "OK". Das ist anders als "check". Die eigentliche "Prüfung" vielleicht in einem anderen Ort, die versuchen, zu vereinheitlichen, die mit Sicherheit nicht"OK", und du ' L gehen im backtracking.
  • Ich fand heraus, dass aus welchem Grund auch immer NewLoc ist immer 0. Gibt es einen Grund das ist? Ich kann nicht scheinen, um es herauszufinden? Auch bin ich mir nicht sicher, ob ich verstanden habe, die zweite Hälfte Ihrer Antwort (nur Programmierung prolog für ein paar Tage).
InformationsquelleAutor Julio | 2010-04-06
Schreibe einen Kommentar