Ich versuche, einen Spieler zu schaffen, der das Spiel Mastermind in LISP lösen würde. Ich habe versucht, die folgende verschachtelte Schleife in einer HilfsfunktionVerschachtelte Schleife in gemeinsamen LISP
(defparameter *counter* 0)
;analyze the score to determine whether points need to be added to counter
(defun analyze (last-response)
(if (> (first last-response) 0)
(setf *counter* (+ (first last-response) *counter*))))
;helper function for finding correct color
(defun guessColor (length colors last-response)
(loop while (< *counter* 4) do
(loop for i from 1 to length
collect (first colors)
(setf colors (rest colors)))
(analyze (last-reponse))))
;baseline Holyguacamole player will guess all colors before trying all combinations of correct color
(defun HolyGuacamole (board colors SCSA last-response)
(declare (ignore SCSA))
;(print last-response)
(guessColor board colors last-response)
(print *counter*)
;(sortColor)
)
Die Verwendung von while-Schleife laufen soll, während die globale Variable *counter*
weniger als 4. Die innere Schleife soll Farben erraten, bezogen auf die Länge der Zapfen erforderlich (variable Länge). Ich habe in den Zusammenstellungsfehler läuft
während macroexpansion von (LOOP WHILE (< COUNTER 4) ...). Benutzen ;
BREAK-ON-SIGNALS abzufangen.
Ich bin nicht vertraut mit LISP, also bin ich nicht sicher, was dieser Fehlercode bedeutet und wie man es beheben kann. Ich hatte das Gefühl, dass ich es korrekt mit den richtigen Klammern verschachtelte, aber ich bin mir nicht sicher, was daran falsch ist.
Link zu Mastermind-Umgebung.
Wie groß ist das ganze Programm? Können Sie es einfügen oder zu einem eigenständigen Beispiel zusammenfassen? Ich sehe keine Definition von "Score" oder "Analyse" oder die Erklärung von "* counter *" –
@GregoryNisbet der Code für das Spiel selbst ist sehr groß. Ich habe bearbeitet, um meine Hilfsfunktionen sowie die Deklaration von * counter * zu haben. Bewertung wird in letzte Antwort geändert – trungnt
Ich denke '(analysieren (last-Antwort)))) sollte' (analysieren Last-Antwort))) '... Es scheint auch einige andere Fehler zu sein ... Ich habe Ich konnte diesen genauen Compilerfehler nicht mit 'clisp' oder' sbcl' reproduzieren. –