尝试使用prolog将变量分配/提取到列表列表中的不同元素
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了尝试使用prolog将变量分配/提取到列表列表中的不同元素相关的知识,希望对你有一定的参考价值。
我正在尝试通过这个Prolog problem,但是,我正在努力让我的解决方案工作,并想知道是否有人可以帮我修复错误-example trace。到目前为止,这是我的代码;
process(L1, [H2|T2], [H2|T], Inconsistent):-
H2 = [Name, Number, _Info],
elementInList(L1, [Name, Number]),
process(L1, T2, T, Inconsistent).
process(L1, [H2|T2], Consistent, [H2|T]):-
H2 = [Name, Number, _Info],
+ elementInList(L1, [Name, Number]),
process(L1, T2, Consistent, T).
process(_L1, [], [], []).
elementInList([H|T], H).
elementInList([H|T], E):-
elementInList(T, E).
编辑:问题固定。解决方案:working code
答案
您需要在几个地方替换方括号到paranthesis。这是完整的代码,在swi - prolog上完美运行。我添加了剪切并完成了一些优化的语句。
process(_L1, [], [], []):- !.
process(L1, [H2|T2], [H2|T], Inconsistent):-
H2 = (Name, Number, _Info),
elementInList(L1, (Name, Number)), !,
process(L1, T2, T, Inconsistent).
process(L1, [H2|T2], Consistent, [H2|T]):-
H2 = (Name, Number, _Info),
+ elementInList(L1, (Name, Number)),
process(L1, T2, Consistent, T).
elementInList([H|_], H):- !.
elementInList([_|T], E):-
elementInList(T, E).
以上是关于尝试使用prolog将变量分配/提取到列表列表中的不同元素的主要内容,如果未能解决你的问题,请参考以下文章