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." Конструктор я так понимаю:
(defun my-constructor (a b c)
  (list a b c))
а вот что такое "The accessor functions"? Объясните, знающие люди.

Решение задачи: «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.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4 из 5