我如何将列表列表中的任何元素总结,而在prolog中等于5?

发布于 2025-01-17 11:34:41 字数 307 浏览 0 评论 0原文

我是新手学习序言的新手。我想实现以下谓词。

equalto5([[1,'a'],[3,'b'],[2,'b'],[1,'b'],[4,'c']], X) --input

按列表列表中的第一个元素删除所有重复的数字,请勿通过第二元素删除重复的字母。

像这样:等于5([[[1,'a'],[3,'b'],[2,'b'],[4,'c']],x),

然后找到根据列表列表中的第一个元素等于5的所有可能结果

X =[1,4]; [2,3]. 

I‘m new to learn the Prolog. I want to fulfill the below predicate.

equalto5([[1,'a'],[3,'b'],[2,'b'],[1,'b'],[4,'c']], X) --input

remove all the duplicated numbers by the first element in the list of lists, Don't remove the duplicated letters by the second element.

like this: equalto5([[1,'a'],[3,'b'],[2,'b'],[4,'c']], X)

then find all possible results that equal 5 based on the first element in the list of lists

X =[1,4]; [2,3]. 

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

笑红尘 2025-01-24 11:34:42
equalto5(List, X) :-
    findall(Num, member([Num, _], List), Ns_dupes),   % numbers from nested lists.
    sort(Ns_dupes, Ns),    % sort/2 also deduplicates.
    member(N1, Ns),        % look for N1 from the numbers ...
    member(N2, Ns),        % and N2 ...
    dif(N1, N2),           % which are different ...
    5 is N1 + N2,          % and sum to 5.
    X = [N1, N2].
equalto5(List, X) :-
    findall(Num, member([Num, _], List), Ns_dupes),   % numbers from nested lists.
    sort(Ns_dupes, Ns),    % sort/2 also deduplicates.
    member(N1, Ns),        % look for N1 from the numbers ...
    member(N2, Ns),        % and N2 ...
    dif(N1, N2),           % which are different ...
    5 is N1 + N2,          % and sum to 5.
    X = [N1, N2].
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文