Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
List Prolog列表决策_List_Prolog - Fatal编程技术网

List Prolog列表决策

List Prolog列表决策,list,prolog,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). 当苏亚米拥有阿纳

我不熟悉开场白编程。请帮我在清单上做个决定。其中,当存在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).
这个规则是anaklakilaki,我想当这个被超越时,suami的输出是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.666666]像这样 请帮助我在列表中执行决策
谢谢你

你想要的只是答案

X=[0.25,0.6666]。
但是,有两条规则适用于
suami
案例:

%丈夫没有孩子
希通瓦利斯([suami | L]、[suami | BL]):-
苏亚米是1/2,
希通瓦利斯(L,BL)。
%丈夫,如果你有孩子
希通瓦利斯([suami | L],[suami | BL]):-
苏亚米是四分之一,
希通瓦利斯(L,BL)。
或同等地

hitungwaris([suami | L],[suami | BL]):-
(苏亚米是1/2;苏亚米是1/4),
希通瓦利斯(L,BL)。
因此,当列表中遇到
suami
时,Prolog将首先应用一个,然后应用另一个,从而得到两个答案

因为您只需要其中一个,所以您的问题规范中缺少了一些内容