Форум программистов, компьютерный форум, киберфорум
CLIPS
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 17.07.2015
Сообщений: 23
1

Создать правила Х явл. братом Y, X является тётей Y и тд. на языке CLIPS

21.11.2020, 11:54. Показов 779. Ответов 1
Метки нет (Все метки)

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



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
(deftemplate person
(slot name)
(slot gender)
(slot age)
)
 
(deftemplate tparent
(slot parentname)
(slot childname)
)
 
(deftemplate Father
(slot fathername)
(slot childname)
)
 
(defrule father
(person (name ?x)(gender male))
(person (name ?y))
(tparent(parentname ?x)(childname ?y))
=>
(printout t ?x " is father of " ?y crlf)
(assert (Father (fathername ?x)(childname ?y)))
)
 
(deftemplate Ded
(slot dedname)
(slot vnukname)
(slot childname)
)
 
(defrule ded
(person (name ?x)(gender male))
(person (name ?y))
(person (name ?z))
(Father(fathername ?x)(childname ?z))
(Father(fathername ?z)(childname ?y))
=>
(printout t ?x " is Ded of " ?y crlf)
(assert (Ded (dedname ?x)(vnukname ?y)))
)
 
(deftemplate Brother
(slot brothername)
(slot name2)
)
 
(defrule brother
(person (name ?x)(gender male))
(person (name ?y))
(person (name ?z))
(tparent (parentname ?z)(childname ?x))
(tparent (parentname ?z)(childname ?y))
[/CODE]
[COLOR="Red"]тут должно быть правило что то типа (person (name ?x)) != (person (name ?y))[/COLOR]
[CODE]=>
(printout t ?x " is Bro of " ?y crlf)
(assert (Brother (brothername ?x)(name2 ?y)))
)
 
 
 
(deftemplate Mother
(slot mothername)
(slot childname)
)
 
(defrule mother
(person (name ?x)(gender female))
(person (name ?y))
(tparent(parentname ?x)(childname ?y))
=>
(printout t ?x " is mother of " ?y crlf)
(assert (Mother (mothername ?x)(childname ?y)))
)
 
 
 
 
(deffacts fperson
(person (name Ilya) (gender male) (age 100))
(person (name Asya) (gender female) (age 100))
(person (name Dima) (gender male) (age 80))
(person (name Sveta) (gender female) (age 80))
(person (name Alexander) (gender male) (age 80))
(person (name Vika) (gender female) (age 80))
(person (name Kristina) (gender female) (age 50))
(person (name Lesha) (gender male) (age 50))
(person (name Ksenia) (gender female) (age 50))
)
 
(deffacts fparent
(tparent (parentname Ilya) (childname Dima))
(tparent (parentname Ilya) (childname Alexander))
(tparent (parentname Asya) (childname Dima))
(tparent (parentname Asya) (childname Alexander))
(tparent (parentname Dima) (childname Lesha))
(tparent (parentname Sveta) (childname Lesha))
(tparent (parentname Alexander) (childname Ksenia))
(tparent (parentname Dima) (childname Kristina))
(tparent (parentname Sveta) (childname Kristina))
(tparent (parentname Vika) (childname Ksenia))
)
0
Миниатюры
Создать правила Х явл. братом Y, X является тётей Y и тд. на языке CLIPS  
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.11.2020, 11:54
Ответы с готовыми решениями:

Первым элементом каждой строки явл. число. Создать копию файла и найти сумму 1 компонентов всех строк
Program LABA2_RI; uses CRT; var f,f1:text; c,sum,Sx:real; n,p,i:byte; Procedure...

Ошибка Значение не является значением объектного типа (Правила)
Добрый вечер! У меня такая проблема: Обновила ЗУП платформа 1С:Предприятие 8.2 (8.2.17.143),...

Создать шуточную программу, которая при вводе имени на русском языке выдаст, как оно звучит на японском языке
Такая задача была сегодня на программировании. Создать шуточную программу, которая при вводе имени...

Как сделать элемент списка братом его предка?
Имеется список 1.--- 1.1--- 1.2 --- 1.3 ---- Как сделать так, чтобы получилось: 1.--- ...

1
0 / 0 / 0
Регистрация: 17.07.2015
Сообщений: 23
23.11.2020, 07:49  [ТС] 2
Решено.

Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
(deftemplate Brother
(slot brothername)
(slot name2)
)
 
(defrule brother
(person (name ?x)(gender male))
(person (name ?y))
(tparent (parentname ?z)(childname ?x))
(tparent (parentname ?z)(childname ?y))
=>
(if (<> (str-compare ?x ?y) 0) then
(assert (Brother (brothername ?x)(name2 ?y)))
))
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.11.2020, 07:49

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Придумать пример семьи из 5 детей. Которые стоят в отношении быть братом
Придумать пример семьи из 5 детей. Которые стоят в отношении быть братом не является транзитивным....


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.