The accessor functions - Lisp
Формулировка задачи:
- (defun my-constructor (a b c)
- (list a b c))
Решение задачи: «The accessor functions»
- (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
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д