Привет. Необходимо довести до рабочего состояния код программы на Clisp - чтото вроде искусственного интеллекта, хотя по сути программка на сравнение образцов с эталлонами. Состоит из 2-х функций. Функции проверки и собственно самой программы (функции) AI которая использует answer для поиска вариантов. Код такой но в дебрях где я его нашел он видно попал посредством "циганского радио" -чтото гдето недостказали, чтото преувеличили.  | Код | (defun answer (p d) . (cond ( (and (null p) (null d) ) t) . ( (or (null p) (null d) ) nil) . ( (and (not (atom (car p) ) ) (equal (caar p) ‘restrict) (equal (cadar p) ‘?) (apply ‘and (mapcar ‘(lambda (pred) (funcall pred (car d) ) ) (cddar p) ) ) ) (answer (cdr p) (cdr d) ) ) ((and (not (atom (cdr p) ) ) (equal (caar p) ‘restrict) (equal (atomcar p) (cadar p )) ‘>) (apply ‘and (mapcar ‘(lambda (pred) (funcall pred(car d) ) ) (cddar p) ) ) (answer (cdr p) (cdr d) ) ) (set (atomcdr (cadar p) ) (car d) ) t) ((or(equal (car p) ‘?) (equal (car p) (car d) ) ) (answer (cdr p) (cdr d) ) ) ((and (atom (car p) ) (equal (atomcar (сar p) ) ‘>) (answer (cdr p) (cdr d) ) ) (set (atomcdr (car p) ) (car d) ) t) ((equal (car p) ‘*) (cond ((answer (cdr p) (cdr d) ) ) ((answer p (cdr d) ) ) ) ) ((and (atom (car p) ) (equal (atomcar (car p) ) ‘*) ) (cond ( (answer (cdr p) (cdr d) ) (set (atomcdr (car p) ) (list (car d) ) ) t) ( (answer p (cdr d) ) (set (atomcdr (car p) ) (cons (car d) (eval (atomcdr (car p) ) ) ) ) t) ) ) ) )
(defun AI() (prog (l wife s) (print ‘(Говорите!)) u1 (setq s (read)) (cond ((AI ‘(Меня волнует *l) s) (print (append ‘(Как давно Вас волнует) l ) ) ) ((AI ‘(* жена *) s) (setq wife t) (print ‘(Расскажите больше о Вашей семье) ) ) ((AI ‘(* космосе *) s) (print ‘(А Вы почему здесь) ) ) ((or (AI ‘(нет) s) (AI ‘(да) s) ) (print ‘(Пожалуйста не будь столь кратким) ) ) ((AI ‘(* (restrict ? badword) *) s) (print ‘(Пожалуйста не пользуйтесь такими словами) ) ) (wife (setq wife nil) (print ‘(Вы говорили о Вашей семье) ) ) (t (print ‘(К сожалению наше время истекло) ) (return ‘(До свидания) ) ) (go u1) ) )
|
Может кто сможет помочь?.
|