Форум программистов, компьютерный форум, киберфорум
Lisp
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
1 / 1 / 0
Регистрация: 21.04.2010
Сообщений: 50

Написание программы на ЛИСПе (Хищник и его свойства)

23.12.2013, 23:56. Показов 1292. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вот задание:

Написать на алгоритмическом языке ЛИСП программу, реализующую экспертную систему определения вида хищника по его свойствам. Создать не менее 24 правил, позволяющих устанавливать, по крайней мере, три вида хищника

Сделать нужно, а я в этом ничего не понимаю....
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.12.2013, 23:56
Ответы с готовыми решениями:

Реализация циклов на Лиспе, Вложенные циклы на Лиспе
1)реализовать двумя способами (LET, LOOP, DO, DOTIMES) первая картинка 2)Согласно варианту вычислить выражение на основе цикла LOOP и...

Как писать программы на Лиспе?
Я раньше довольно неплохо программировал на различных языках, но сейчас мне понадобилось написать пару прог на Лиспе, и хотя Лисп сильно...

День добрый! Можете прокомментировать код программы на Лиспе
Помогите разобраться в коде) Множества заданы списками строк L1 и L2. Получить в виде списка L3 множество L1\L2. Код программы: ...

3
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38201 / 21133 / 4310
Регистрация: 12.02.2012
Сообщений: 34,740
Записей в блоге: 14
24.12.2013, 09:01
24 декабря - самое подходящее время для того, чтобы наконец... попросить помощи. Поищи на форуме - примеры ЭС на Лиспе попадались.
0
1 / 1 / 0
Регистрация: 21.04.2010
Сообщений: 50
24.12.2013, 12:48  [ТС]
Задание выдали только сегодня, а к субботе нужно сделать. Если бы полгода было бы, я сама разобралась бы. Вот и прошу помочь, так как не знаю, чего и делать то
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38201 / 21133 / 4310
Регистрация: 12.02.2012
Сообщений: 34,740
Записей в блоге: 14
24.12.2013, 13:11
Вот код, который может помочь. Код не мой, (источник - в начале):

Кликните здесь для просмотра всего текста

Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
;; [url]http://forum.ru-board.com/topic.cgi?forum=33&topic=9177[/url]
 
(defstruct правило им_ услови_ выводы)
(make-правило
  :им_     'ПРАВИЛО9
  :услови_ '(
              (высота полёта до 50 м)
            )
  :выводы  '(
              (птица Воробей)
            )
)
(setq ПРАВИЛО1
  '(ЕСЛИ размах крыльев до 2.4 м
    ТО птица Орёл)
)
(setq ПРАВИЛО2
  '(ЕСЛИ окраска оперени_ чёрно-бела_
    ТО птица Орёл)
)
(setq ПРАВИЛО3
  '(ЕСЛИ высота полёта до 1500 м
    ТО птица Орёл)
)
(setq ПРАВИЛО4
  '(ЕСЛИ размах крыльев до 1.2 м
    ТО птица Сокол)
)
(setq ПРАВИЛО5
  '(ЕСЛИ окраска оперени_ тёмна_
    ТО птица Сокол)
)
(setq ПРАВИЛО6
  '(ЕСЛИ высота полёта до 2000 м
    ТО птица Сокол)
)
 
(setq ПРАВИЛО7
  '(ЕСЛИ размах крыльев до 0.25 м
    ТО птица Воробей)
)
(setq ПРАВИЛО8
  '(ЕСЛИ окраска оперени_ коричнева_
    ТО птица Воробей)
)
(setq ПРАВИЛО9
  '(ЕСЛИ высота полёта до 50 м
    ТО птица Воробей)
)
;Функци_ дл_ добавлени_ элемента в конец списка
(defun присоедини (x y)  
  (append x (list y))
)
;Анализирует правила и составл_ет из них список
(defun анализируй (правила)
  (mapcar (function анализируй-правило) правила)
)
;Преобразует правило в форме предложени_ в структуру
(defun анализируй-правило (им_)
  (let ((правило (eval им_)))
    (make-правило  
      :им_ им_
      :услови_ (услови_ правило)
      :выводы (выводы правило)
    )
  )
)
;Возвращает услови_ в виде списка
(defun услови_ (предложение)
  (предложение-и (cdr предложение) nil nil)
)
 
;Возвращает выводы в виде списка
(defun выводы (предложение)
  (предложение-и (cdr (member 'то предложение)) nil nil)
)
 
;Выдел_ет предложени_, раздел_емые символом И
(defun предложение-и (предложение часть результат)
  (cond
    (
      (null предложение) ;; условие окончани_  
      (присоедини результат часть)
    )  
    (
      (eq (car предложение) 'то) ;; условие окончани_  
      (присоедини результат часть)
    )
    (
      (eq (car предложение)) ;; новое предложение  
      (предложение-и  
        (cdr предложение)  
        nil
        (присоедини результат часть)
      )
    )
    (
      t ; следующее слово
      (предложение-и  
        (cdr предложение)
        (присоедини часть  (car предложение))
        результат
      )
    )
  )
)
(setq *база-знаний*
  '(ПРАВИЛО1 ПРАВИЛО2 ПРАВИЛО3 ПРАВИЛО4 ПРАВИЛО5
    ПРАВИЛО6 ПРАВИЛО7 ПРАВИЛО8 ПРАВИЛО9)
)
(setq *правила* (анализируй *база-знаний*))
;Провер_ет, применимо ли правило
(defun проверь-правило (правило)
  (подмножество (правило-услови_ правило) *факты*)
)
 
;Провер_ет, _вл_етс_ ли множество подмножеством
(defun подмножество (подмножество множество)
  (equal  
    подмножество
    (intersection подмножество множество)
  )
)
 
(defmacro mypush (v l)
    `(setf ,l (cons ,v ,l))
)
 
 
;Расшир_ет список фактов выводами правила
(defun добавь-выводы (правило)
  (do ((выводы (правило-выводы правило) (cdr выводы)))
    ((null выводы) *факты*)
    (if (member (car выводы) *факты*)
      nil
      (progn
        (format t "Согласно правилу ~S : " (правило-им_ правило))
        (выведи-элементы (car выводы))
        (mypush (car выводы) *факты*)
      )
    )
  )
)
 
;Выводит элементы списка
(defun выведи-элементы (список)
  (dotimes (i (length список))
    (princ (nth i список))
    (princ " ")
  )
  (terpri)
  t
)
(setq *гипотезы*
  '(
    (птица Орёл)
    (птица Сокол)
    (птица Воробей)
  )
)
(setq *факты* nil)
(setq *запросы* nil)
 
;;; Глобальные динамические переменнне
(defvar *гипотезы*)  ; значение определено выше
(defvar *правила*)   ; значение определено выше
(defvar *факты*)     ; значение определено выше
(defvar *запросы*)   ; значение определено выше
 
;;; Главна_ программа Птички
(defun Птички ()  ; Экспертна_ система дл_ распознавани_ птиц
  (setq *факты* nil)
  (setq *запросы* nil)
  (знаток-птиц *гипотезы*)
)
 
;Пытаетс_ проверить какую-нибудь гипотезу
(defun знаток-птиц (гипотезы)  
  (cond
    (
      (null гипотезы)
      "Не могу доказать никакую из известных мне гипотез"
    )
    (
      (докажи (car гипотезы))
      (car гипотезы)   ; результат
    )
    (
      t
      (знаток-птиц (cdr гипотезы)) ; нова_ попытка
    )
  )
)
(defun докажи (гипотеза)
  (let ((прав nil))
    (cond
      ((member гипотеза *факты*) t)            ; ветвь 1
      (
        (setq прав (возможные гипотеза))       ; ветвь 2
        (if (пр_мо гипотеза прав)  
          t
          (рекурсивно гипотеза прав)
        )
      )
      (
        t                                      ; ветвь 3
        (ветка3 гипотеза)
      )
    )
  )
)
 
(defun ветка3 (гипотеза)
  (cond
    ((member гипотеза *запросы*) nil)    
    (
      (and
        (princ "Это правда, что: ")
        (выведи-элементы гипотеза)
        (eq (read) 'Да)
      )
      (setq *факты* (union (list гипотеза) *факты*))  
      t
    )
    (
      t
      (mypush гипотеза *запросы*)
      nil
    )
  )
)
 
(defun возможные (гипотеза)
  (let ((result nil))
    (dotimes (i (length *правила*) result)
      (when (member  
               гипотеза (правило-выводы (nth i *правила*))
               :test (function equal)
               )
         (setq result (append result (list (nth i *правила*))))
      )
    )
  )
)
 
;Провер_ет, можно ли доказать гипотезу непосредственно
;при помощи какого-нибудь правила
(defun пр_мо (гипотеза возможные)
  (cond
    ((null возможные) nil)
    ((null *факты*) nil)
    (
      (проверь-правило (car возможные))
      (добавь-выводы (car возможные))
    )
    (
      t
      (пр_мо гипотеза (cdr возможные))
    )
  )
)
 
;Рекурсивно провер_ет гипотезу
(defun рекурсивно (гипотеза возможные)
  (cond
    ((null возможные) nil)
    (
      (проверь-непр_мо (правило-услови_ (car возможные)))
      (добавь-выводы (car возможные))
    )
    (
      t
      (рекурсивно гипотеза (cdr возможные))
    )
  )
)
 
;Рекурсивно провер_ет все услови_
(defun проверь-непр_мо (услови_)
  (every (function докажи) услови_)
)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.12.2013, 13:11
Помогаю со студенческими работами здесь

Компонент пользователя и его свойства при размещении его на форме
Есть пользовательский компонент на базе TImage. При размещении его на форме проекта, компонент отрисовывается в соотвествии со своими...

Получить доступ к элементу объекта document по его ID и изменить свойства элемента и его содержимое
Здравствуйте господа, нужен скрипт который будет выводить все свойства объекта, допустим <div> Спасибо:)

Написание программы с использованием файловых переменных. Разработка программы для работы с текстовым файлом
Помогите пожалуйста : С помощью текстового редактора создать текстовый файл file1. Переписать строки файла file1 в новый текстовый файл...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru