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

Подсчёт процентов вероятности правоты Акинатора (Visual Prolog)

14.01.2016, 15:17. Показов 984. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем добра.
Есть вот такой код, нарытый на форуме и переработанный косметически под собственные нужды. Но есть нюанс: нужно ещё подсчитать и вывести проценты шанса, что может быть иная болезнь (т.е., если 3 из 4 симптомов другой болезни совпадают с той, у которой 100% совпадение, вывести фразу "есть % шанс, что у вас может быть такая-то болезнь"). Каким образом можно такое реализовать?

Prolog
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
implement main
open core, console
 
class facts
fact: (integer, string).
 
class predicates
rule: (integer,string,string,integer*) nondeterm(o,i,o,o).
ask: (integer) determ.
recognition: (string).
discover:(integer*) nondeterm.
complete: (integer) determ.
 
clauses
 
ask(X):-fact(X,"Y"),!.
ask(X):-fact(X,"N"),!,fail.
ask(1):-write("ваша болезнь связана с головой?"),!,complete(1).
ask(2):-write("Ваша болезнь связана с животом?"),!,complete(2).
ask(3):-write("Проблемы в паху?"),!,complete(3).
ask(4):-write("У вас повышена температура?"),!,complete(4).
ask(5):-write("У вас есть головокружение/слабость?"),!,complete(5).
ask(6):-write("У вас мигрень/головная боль?"),!,complete(6).
ask(7):-write("Бывает ли озноб?"),!,complete(7).
ask(8):-write("глаза преобрели жёлтый оттенок?"),!,complete(8).
ask(9):-write("Есть ли проблемы со стулом(понос/запор)?"),!,complete(9).
ask(10):-write("У вас болит живот?"),!,complete(10).
ask(11):-write("Присутствует ли у вас кашель?"),!,complete(11).
ask(12):-write("Сопутствует ли запах амиака изо рта?"),!,complete(12).
ask(13):-write("А неприятный запах гнили?"),!,complete(13).
ask(14):-write("Если наклонить голову, вознакает боль?"),!,complete(14).
ask(15):-write("А зуд при массировании гайморовых пазух?"),!,complete(15).
ask(16):-write("Заложен ли у вас нос?"),!,complete(16).
ask(17):-write("Замечали, что давит,болит в груди?"),!,complete(17).
ask(18):-write("Есть ли  вас боль в горле при глотании?"),!,complete(18).
ask(19):-write("Болит ли ваше горло повсеместно?"),!,complete(19).
ask(20):-write("Мучают ли вас непрекращающиеся боли в ухе?"),!,complete(20).
ask(21):-write("Першит ли у вас в горле?"),!,complete(21).
ask(22):-write("Отёкшее у вас горло?"),!,complete(22).
ask(23):-write("Потеряли голос?"),!,complete(23).
ask(24):-write("Присутствует тошнота?"),!,complete(24).
ask(25):-write("У вас есть изжога?"),!,complete(25).
ask(26):-write("Отсутствует аппетит?"),!,complete(26).
ask(27):-write("Понижено давление?"),!,complete(27).
ask(28):-write("У вас воспалены яички?"),!,complete(28).
ask(29):-write("Есть ли место болям в пенисе?"),!,complete(29).
ask(30):-write("Ваш секс стал болезненным?"),!,complete(30).
ask(31):-write("Присутствуют ли в паху сосочковидные наросты?"),!,complete(31).
ask(32):-write("Появилась ли у вас сыпь на лобке?"),!,complete(32).
ask(33):-write("Зудит ли пах?"),!,complete(33).
ask(34):-write("Есть ли у вас в паху язва?"),!,complete(34).
ask(35):-write("Есть ли у вас прозрачные, скудные ненормальные выделения из мочеиспускательного канала?"),!,complete(35).
ask(36):-write("Есть ли герписные высыпания?"),!,complete(36).
ask(37):-write("Нет случаем белого налёта на головке пениса?"),!,complete(37).
 
rule(1,"болезнь","отоларингология",[1]).
rule(2,"болезнь","гастроэнтерология",[2]).
rule(3,"болезнь","венерическая болезнь",[3]).
rule(4,"отоларингология","гайморит",[14,15,16]).
rule(5,"отоларингология","ангина",[18,19]).
rule(6,"отоларингология","отит",[20]).
rule(7,"отоларингология","фарингит",[11,18,19,21]).
rule(8,"отоларингология","осложнённый фарингит",[4,6,11,18,19,21]).
rule(9,"отоларингология","ларингит",[6,11,18,19,21,22,23]).
rule(10,"отоларингология","ОРВИ",[4,5,7,11,14,16,17,19,22]).
rule(11,"гастроэнтерология","панкреатит",[4,7,8,9,10]).
rule(12,"гастроэнтерология","алхоргидрия",[10,24]).
rule(13,"гастроэнтерология","острый гастрит",[4,9,24,25]).
rule(14,"гастроэнтерология","атония кишечника",[9,26]).
rule(15,"гастроэнтерология","пищевое отравление",[4,9,24,27]).
rule(16,"венерическая болезнь","гонорея",[28,29]).
rule(17,"венерическая болезнь","отсроконечные кондиломы",[6,29,30,31]).
rule(18,"венерическая болезнь","лобковый педикулёз",[32,33]).
rule(19,"венерическая болезнь","первичный сифилис",[34]).
rule(20,"венерическая болезнь","ВИЧ-инфекция",[4,9,18,21]).
rule(21,"венерическая болезнь","хламидиоз",[29,35]).
rule(22,"венерическая болезнь","генитальный герпис",[33,36]).
rule(23,"венерическая болезнь","кандидоз",[29,30,33,37]).
 
recognition(X):- rule(N,X,Y,Z), discover(Z),!, write(" о боже мой! Да у вас ", X, " - ", Y, " (правило ", N, ")"), nl, recognition(Y).
 recognition("отоларингология"):- write("сорян, с этим не ко мне."), nl,!.
 recognition("гастроэнтерология"):- write("сорян, с этим не ко мне."), nl,!.
 recognition("болезнь"):- write("сорян, с этим не ко мне."), nl,!.
recognition(_).
 
discover ([X|Y]):- ask(X), discover(Y).
discover([]).
 
complete(X):- write(" Y/N"), nl, Y=readline(), ((Y="y";Y="Y"), assert(fact(X, "Y")),!; assert(fact(X,"N")),!,fail).
 
run() :- init(),
write("Добро пожаловать на экспресс-тест определения вашего заболевания. Ответьте на ряд вопросов анамнеза, пожалуйста: "),
recognition("болезнь"),
_=readchar().
 
end implement main
 
goal
    mainExe::run(main::run).
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.01.2016, 15:17
Ответы с готовыми решениями:

Перенос программы с Visual Prolog 7.1 в Visual Prolog 7.5
Проблема переноса. Взяла пример с книги Visual Prolog 7.1 для начинающих. Это игра червь. Вроде всё, что не компилировалось я исправила, но...

Пожалуйста, помоите переделать программу с Turbo Prolog на Visual Prolog
DOMAINS l_i=integer* l_s=string* i=integer s=string c=char structura=str(i,s) %Структура Порода-Параметры и его список ...

Из Turbo Prolog в Visual Prolog - где будут отличия в коде?
ребята ,помогите. есть прога на турбо прологе,а нужно отредактировать под visual prolog 7.5. Что изменится? Где отличия?.. ниже...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.01.2016, 15:17
Помогаю со студенческими работами здесь

Перевести код из turbo prolog в visual prolog
не подскажите плиз как будет выглядеть код turbo prolog в Visual Prologe 5.2 turbo prolog: domains int=integer intl=int* ...

Код Turbo Prolog переделать в Visual Prolog 5.2
Помогите пожалуйста переделать код Turbo Prolog в Visual Prolog 5.2 domains st=st(string,real,real,real,real) st1=st1(string,real) ...

Перевести код из turbo prolog в visual prolog
не подскажите плиз как будет выглядеть код turbo prolog в Visual Prologe 7.3 turbo prolog: predicates for(integer,integer) ...

[Turbo Prolog] [Visual Prolog] Задача на рекурсию
Здравствуйте, помогите, пожалуйста, с такой задачей... Имеется горсть из N Монет C1,C2,....,Cn различного достоинства. Определить,...

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


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru