Просто ничего не выводит, а какую то полезную информацию не нашла не все влезло, отблагодарю ((implement main
open core, console
class facts
fact : (integer, string).
class predicates
rule : (integer [out], string, string [out], integer* [out]) nondeterm.
ask : (integer) determ.
recognition : (string).
discover : (integer*) nondeterm.
complete : (integer) determ.
clauses
rule(1, "Телефон ", "Для игр", [1]).
rule(2, "Телефон", "Для фотосъемки", [2]).
rule(3, "Телефон", "Для повседневных задач", [3]).
rule(4, "Для игр", "Цена до 35000", [1, 4]).
rule(5, "Для игр", "Цена от 35000 до 50000", [1, 5]).
rule(6, "Для игр", "Цена свыше 50000", [1, 6]).
rule(7, "Для фотосъемки", "Цена от 15000 до 25000", [2, 7]).
rule(8, "Для фотосъемки", "Цена от 25000 до 50000", [2, 8]).
rule(9, "Для фотосъемки", "Цена от 50000 до 70000", [2, 9])
rule(10, "Для повседневных задач", "Цена от 5000 до 15000", [3, 10]).
rule(11, "Для повседневных задач", "Цена от 15000 до 25000", [3, 7, 11]).
rule(12, "Цена до 35000", "Производитель процессора - MediaTek", [4, 12]).
rule(13, "Цена до 35000", "Производитель процессора - Qualcomm", [4, 13]).
rule(14, "Цена от 35000 до 50000", "Производитель процессора - MediaTek", [5, 12, 14]).
rule(16, "Цена от 35000 до 50000", "Производитель процессора - Qualcomm", [5, 13, 16]).
rule(17, "Цена свыше 50000", "Производитель процессора - MediaTek", [6, 12, 17]).
rule(18, "Цена свыше 50000", "Производитель процессора - Qualcomm", [6, 13, 18]).
rule(19, "Цена от 15000 до 25000", "Разрешение основной камеры - от 40 до 59 Мпикс", [7, 19]).
rule(20, "Цена от 15000 до 25000", "Разрешение основной камеры - от 60 до 99 Мпикс", [7, 20]).
rule(21, "Цена от 25000 до 50000", "Разрешение основной камеры - от 60 до 99 Мпикс", [8, 20, 21]).
rule(22, "Цена от 25000 до 50000", "Разрешение основной камеры - от 100 Мпикс", [8, 22]).
rule(23, "Цена от 50000 до 70000", "Разрешение основной камеры - от 100 Мпикс", [9, 22, 23]).
rule(24, "Цена от 5000 до 15000", "Емкость аккумулятора - до 3499 мАч", [10, 24]).
rule(25, "Цена от 5000 до 15000", "Емкость аккумулятора - от 4000 до 4499 мАч", [10, 25]).
rule(26, "Цена от 15000 до 25000", "Емкость аккумулятора - от 4500 до 4999 мАч", [11, 26]).
rule(27, "Цена от 15000 до 25000", "Емкость аккумулятора - от 5000 до 5499 мАч", [11, 27]).
rule(28, "Производитель процессора - MediaTek", "Оперативная память - 6 ГБ", [12, 28]).
rule(29, "Производитель процессора - MediaTek", "Оперативная память - 8 ГБ", [12, 29]).
rule(30, "Производитель процессора - Qualcomm", "Оперативная память - 6 ГБ", [13, 30]).
rule(31, "Производитель процессора - Qualcomm", "Оперативная память - 8 ГБ", [13, 31]).
rule(32, "Производитель процессора - MediaTek", "Оперативная память - 8 ГБ", [14, 29, 32]).
rule(33, "Производитель процессора - MediaTek", "Оперативная память - 12 ГБ", [14, 33]).
rule(34, "Производитель процессора - Qualcomm", "Оперативная память - 8 ГБ", [16, 31, 34]).
rule(35, "Производитель процессора - Qualcomm", "Оперативная память - 12 ГБ", [16, 33, 35]).
rule(36, "Производитель процессора - MediaTek", "Оперативная память - 12GB", [1, 6, 12, 33, 36]).
rule(37, "Производитель процессора - MediaTek", "Оперативная память - 16GB", [1, 6, 12, 37]).
rule(38, "Производитель процессора - Qualcomm", "Оперативная память - 12GB", [1, 6, 13, 33, 38]).
rule(39, "Производитель процессора - Qualcomm", "Оперативная память - 16GB", [1, 6, 13, 37, 39]).
rule(40, "Разрешение основной камеры - от 40 до 59Мпикс", "Показатель апертуры от 2.5 до 2.3", [2, 7, 19, 40]).
rule(41, "Разрешение основной камеры - от 40 до 59Мпикс", "Показатель апертуры от 2.2 до 1.9", [2, 7, 19, 41]).
rule(42, "Разрешение основной камеры - от 60 до 99Мпикс", "Показатель апертуры от 2.5 до 2.3", [2, 7, 20, 40, 42]).
rule(43, "Разрешение основной камеры - от 60 до 99Мпикс", "Показатель апертуры от 2.2 до 1.9", [2, 7, 20, 41, 43]).
rule(44, "Разрешение основной камеры - от 60 до 99Мпикс", "Показатель апертуры от 2.0 до 1.8", [2, 8, 20, 21, 44]).
rule(45, "Разрешение основной камеры - от 60 до 99Мпикс", "Показатель апертуры от 1.7 до 1.5", [2, 8, 20, 21, 45]).
rule(46, "Разрешение основной камеры - от 100Мпикс", "Показатель апертуры от 2.0 до 1.8", [2, 8, 22, 44, 46]).
rule(47, "Разрешение основной камеры - от 100Мпикс", "Показатель апертуры от 1.7 до 1.5", [2, 8, 22, 45, 47]).
rule(48, "Разрешение основной камеры - от 100Мпикс", "Показатель апертуры от 2.0 до 1.8", [2, 9, 22, 23, 44, 46, 48]).
rule(49, "Разрешение основной камеры - от 100Мпикс", "Показатель апертуры от 1.7 до 1.5", [2, 9, 22, 23, 45, 47, 49]).
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(4).
ask(4) :-
write("Ценовая категория до 35000 тысяч?"),
!,
complete(4).
ask(5) :-
write("Ценовая категория от 35000 до 50000 тысяч?"),
!,
complete(5).
ask(6) :-
write("Ценовая категория свыше 50000 тысяч?"),
!,
complete(6).
ask(7) :-
write("Ценовая категория от 15000 до 25000 тысяч?"),
!,
complete(7).
ask(8) :-
write("Ценовая категория от 25000 до 50000 тысяч?"),
!,
complete(8).
ask(9) :-
write("Ценовая категория от 50000 до 70000 тысяч?"),
!,
complete(9).
ask(10) :-
write("Ценовая категория от 5000 до 15000 тысяч?"),
!,
complete(10).
ask(11) :-
write("Производитель процессора MediaTek?"),
!,
complete(11).
ask(12) :-
write("Производитель процессора Qualcomm?"),
!,
complete(12).
ask(13) :-
write("Разрешение основной камеры от 40 до 59 Мпикс?"),
!,
complete(13).
ask(14) :-
write("Разрешение основной камеры от 60 до 99 Мпикс?"),
!,
complete(14).
ask(15) :-
write("Разрешение основной камеры от 100 Мпикс?"),
!,
complete(15).
ask(16) :-
write("Ёмкость аккумулятора до 3499 мАч?"),
!,
complete(16).
ask(17) :-
write("Ёмкость аккумулятора от 4000 до 4499 мАч?"),
!,
complete(17).
ask(18) :-
write("Ёмкость аккумулятора от 4500 до 4999 мАч?"),
!,
complete(18).
ask(19) :-
write("Ёмкость аккумулятора от 5000 до 5499 мАч?"),
!,
complete(19). recognition(X) :-
rule(N, X, Y, Z),
discover(Z),
!,
write(" это более всего похоже на ", X, " - ", Y, " (правило ", N, ")"),
nl,
recognition(Y).
recognition("Для игр") :-
write("2этот телефон системе не известен!"),
nl,
!.
recognition("Для фотосъемки") :-
write("3этот телефон системе не известен!"),
nl,
!.
recognition("Для повседневных задач") :-
write("4этот телефон системе не известен!"),
nl,
!.
recognition(_).
discover([X | Y]) :-
ask(X),
discover(Y).
discover([]).
complete(X) :-
write(" y/n"),
nl,
Y = readline(),
((Y = "y" or Y = "Y") and assert(fact(X, "y")) and ! or assert(fact(X, "n")) and ! and fail).
run() :-
init(),
recognition("телефон"),
_ = readchar().
end implement main
goal
mainExe::run(main::run).