Тестовые примеры :
Программа по виду определяет ПРИБОР.
Для прибора характерно : под ним стол ? no.
Для прибора характерно : нажимать SHIFT пальцем ? no.
Для прибора характерно : под ним бутылки ? yes.
Для прибора характерно : нажимать SHIFT ногой ? yes.
Для прибора характерно : мигание лампочки ? no.
Для прибора характерно : нахождение на нем чашки с чаем ? yes.
Для прибора характерно : раскрутка диска ? no.
Для прибора характерно : большое количество клавиш ? yes.
Для прибора характерно : наличие липкости ? yes.
Для прибора характерно : возможность разнести в щепки ? yes.
Судя по всему ето : пианино
no
Программа по виду определяет ПРИБОР.
Для прибора характерно : под ним стол ? yes.
Для прибора характерно : под ним бутылки ? no.
Для прибора характерно : нажимать SHIFT пальцем ? no.
Для прибора характерно : нажимать SHIFT ногой ? no.
Для прибора характерно : нахождение на нем чашки с чаем ? no.
Для прибора характерно : большое количество клавиш ? yes.
Для прибора характерно : наличие липкости ? yes.
Для прибора характерно : мигание лампочки ? no.
Для прибора характерно : раскрутка диска ? no.
Для прибора характерно : возможность разнести в щепки ? yes.
Судя по всему ето : телефон
Программа по fuzzy logic :
example(1,' Случайно ли : 24 часа в сутках и 24 бутылки спиртного в ящике ? ').
example(2,' Компьютер - Это Главное Зло !!! ').
example(3,' Хуже водки лучше нет ').
example(4,' Сессия как ведро гвоздей ? ').
example(5,' "Встретимся под столом..." - это тост ? ').
example(6,' Большой программе - большие глюки ').
example(7,' Лучше недоперепить, чем перенедопить ').
example(8,' Шепот на зачетной неделе : "Ловись, халява !" ').
example(9,' Если пиво мешает учебе, то ну нафиг ... это пиво ? ').
example(10,' ТОЭ - как много в этом звуке ... ').
example(11,' Сессия - это беспроигрышная лотерея ').
example(12,' Серп и молот - коси и забивай ? ').
mind(' учиться, учиться и еще раз туда же ',D):-
rules([1,2,3,4,5,6,7,8,9,10,11,12],
[0.99,0.9,0.2,0.3,0.1,0,3,0.6,0.3,0.9,0.5,0.5,0.1],0.9,D).
mind(' студент - это почти ты ',D):-
rules([1,2,3,4,5,6,7,8,9,10,11,12],
[0.5,0.6,0.3,0.6,0.5,0.5,0.4,0.6,0.7,0.7,0.5,0.3], 0.9, D).
mind(' и как ты все успеваешь ? ',D):-
rules([1,2,3,4,5,6,7,8,9,10,11,12],
[0.2,0.3,0.6,0.6,0.7,0.6,0.65,0.65,0.4,0.8,0.5,0.6],0.9,D).
mind(' встретимся у ларька - поговорим... ',D):-
rules([1,2,3,4,5,6,7,8,9,10,11,12],
[0.1,0.1,0.8,0.8,0.8,0.8,0.8,0.8,0.1,0.9,0.2,0,9],0.9,D).
mind(' так и до армии недалеко ',D):-
rules([1,2,3,4,5,6,7,8,9,10,11,12],
[0,0,0.99,0.99,0.99,0.99,0.99,0.99,0,0.99,0.1,0.99],0.9,D).
begin:- nl,write(' Программа ищет настоящих студентов в наших рядах'),
nl,write(' Вам нужно вводить вероятности верности,'),
nl,write(' на ваш взгляд,следующих утверждений'),
nl,write(' 100%-ное ДА = 0.99 , 100%-ное НЕТ = 0 ,'),
nl,write(' НЕ УВЕРЕН = степень уверенности от 0.1 до 0.95'),
assert(res([])),
mind(N,D),
retract(res(Res)),
assert(res([im(N,D)|Res])),fail.
begin:-res(Ls),
max(Ls,im(N,D)),
nl,write(' Вам можно сказать следующее : '), write(N),
nl,
write(' В Вас вот такой '), D1 is D*100,
write(D1), write(' % студенчества !!! '),
clean_base.
qwer(X,D):-
xqwer(X,D),!.
qwer(X,D):-
nl,write(X),write(': '),
read(D),
assert(xqwer(X,D)).
asd(Mn1,Mn2,K,D):-
imp_ce(Mn1,Mn2,Mn3),
min(Mn3,Min),
D is Min*K.
imp_ce([],[],[]).
imp_ce([M1|Mn1],[M2|Mn2],[M3|Mn3]):-
M3 is 1-M2*(1-M1),
imp_ce(Mn1,Mn2,Mn3).
rules(Mn1,Mn2,K,D):-
rule(Mn1,Mn3),
asd(Mn3,Mn2,K,D).
rule([],[]).
rule([M1|Mn1],[M2|Mn2]):-
example(M1,Ex),
qwer(Ex,M2),
rule(Mn1,Mn2).
min([M],M).
min([X,Y|Ls],M):-
X>Y,
min([Y|Ls],M).
min([X,Y|Ls],M):-
X=<Y,
min([X|Ls],M).
max([X],X).
max([im(N1,D1),im(_,D2)|Ls],X):-
D1>D2,
max([im(N1,D1)|Ls],X).
max([im(_,D1),im(N2,D2)|Ls],X):-
D2>=D1,
max([im(N2,D2)|Ls],X).
clean_base:-
retract(res(_)),
fail.
clean_base:-
retract(xqwer(_,_)),
fail.
clean_base.