gpt4 book ai didi

Prolog 输出 : list element, 未定位

转载 作者:行者123 更新时间:2023-12-01 22:19:31 25 4
gpt4 key购买 nike

这是我想要得到的序言输出:

?-mill(try(a,b,c,d,e),R).
R = (e:-c) ;

使用下面的代码我得到数字输出。如何获得 (e:-c) 输出,而不是它们的列表位置号?

?-mill(try(a,b,c,d,e),R).
R = (5:-3) ;

代码:

try(-,+,+,+,+).
try(-,-,+,+,+).
try(+,+,+,+,+).
try(+,+,-,-,-).
try(+,-,-,+,-).

construct(X, Y):-
functor(X,F,N), functor(Y,F,N).

row_number(X, Y):-
findall(a, X, List), length(List, Y).

reason(Table,A,B):-
calc(Table,A,+,PA),
calc(Table,B,+,PB),
calc(Table,A,+,B,+,PP),
calc(Table,A,+,B,-,PM),
PA=PB,
PM=0.

calc(Table,Column,Body,Number):-
construct(Table,Var),
arg(Column,Var,Body),
row_number(Var,Number).

calc(Table,A,Abody,B,Bbody,Number):-
construct(Table,Var),
arg(A,Var,Abody),
arg(B,Var,Bbody),
row_number(Var,Number).

mill(Table,B:-A):-
functor(Table,_,B),
row_number(reason(Table,A,B),1),
reason(Table,A,B).

最佳答案

经过此修改

mill(Table,B_:-A_):-
functor(Table,_,B),
row_number(reason(Table,A,B),1),
reason(Table,A,B),
arg(A, Table, A_),
arg(B, Table, B_).

我明白了

?- gtrace,mill(try(a,b,c,d,e),R).
R = (e:-c) ;
false.

你应该检查单例PP,那个目标

...,
calc(Table,A,+,B,+,PP),
...

可能没用...

关于Prolog 输出 : list element, 未定位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16362127/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com