The accessor functions - Lisp
Формулировка задачи:
Пишу код для Ханойских башен.
Одним из заданием является: "Define an appropriately named state constructor and appropriately named state accessor
functions. The constructor should take three lists as arguments, and should return a list containing
these three lists. The accessor functions should take a state (i.e., a list of three lists) as its
argument, and return the list corresponding to peg A, peg B or peg C."
Конструктор я так понимаю:
а вот что такое "The accessor functions"? Объясните, знающие люди.
(defun my-constructor (a b c) (list a b c))
Решение задачи: «The accessor functions»
textual
Листинг программы
(defun move-a-to-b (game-state) (let ((peg-a (peg-a game-state)) (peg-b (peg-b game-state))) (if (legal-move-p (peg-a game-state) (peg-b game-state)) (let ((new-peg-a (remove-disk peg-a)) (new-peg-b (add-disk (top-disk peg-a) peg-b))) (make-game-state new-peg-a new-peg-b (peg-c game-state))) nil)))
Объяснение кода листинга программы
В коде определена функция move-a-to-b
, которая принимает аргумент game-state
. Внутри функции используется оператор let
, чтобы создать две переменные: peg-a
и peg-b
, которые содержат значения соответствующих полей из аргумента game-state
.
Затем с помощью условного оператора if
проверяется, является ли текущий ход допустимым (legal-move-p). Если это так, то выполняется блок кода, который включает в себя создание новой игры с помощью функции make-game-state
, где new-peg-a
и new-peg-b
являются новыми значениями для полей peg-a
и peg-b
соответственно.
Если ход недопустим, то ничего не происходит и функция возвращает nil
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д