#list #prolog
Вопрос:
я новичок в программировании пролога. Пожалуйста, помогите мне принять решение в списке. где, когда переменная anaklakilaki существует, выход suami равен 1/2, а не 1/4.
вот мой код
вот правила суами, когда у него нет анаклакилаки, его выходное значение равно 1/2
hitungwaris([],[]).
%Suami tidak punya anak
hitungwaris([suami|L],[Suami|BL]) :-
Suami is 1/2,
hitungwaris(L,BL).
и когда у суами есть анаклакилаки, его ценности составляют 1/4
%rules suami jika punya anak
hitungwaris([suami|L],[Suami|BL]) :-
Suami is 1/4,
hitungwaris(L,BL).
это правила анаклакилаки, я хочу, чтобы при этом исключении выход суами был 1/4
%rules anak laki-laki kandung jika hanya seorang
hitungwaris([anaklakilaki|L],[AnakLaki|BL]) :-
AnakLaki is 2/3,
hitungwaris(L,BL).
вот мой вопрос, который я задаю
?-hitungwaris([suami,anaklakilaki],X).
здесь вывод
X = [0.5, 0.6666666666666666]
X = [0.25, 0.6666666666666666]
я хочу, чтобы выход был только один-это второй выход, X = [0,25, 0,666666666666666666] вот так
Пожалуйста, помогите мне выполнить решение в списке
Спасибо
Ответ №1:
Тебе нужен только ответ
X = [0.25, 0.6666666666666666].
Однако у вас есть два правила, которые применяются в данном suami
случае:
% Husband has no children
hitungwaris([suami|L],[Suami|BL]) :-
Suami is 1/2,
hitungwaris(L,BL).
% Husband if you have children
hitungwaris([suami|L],[Suami|BL]) :-
Suami is 1/4,
hitungwaris(L,BL).
или эквивалентно
hitungwaris([suami|L],[Suami|BL]) :-
(Suami is 1/2 ; Suami is 1/4),
hitungwaris(L,BL).
таким образом, Пролог будет применять сначала один, а затем другой, когда suami
он встречается в списке, что приведет к двум ответам.
Поскольку вам просто нужен один из них, в вашей спецификации проблемы чего-то не хватает.