gpt4 book ai didi

prolog - 检查列表中的所有数字在序言中是否都不同

转载 作者:行者123 更新时间:2023-12-04 13:19:33 25 4
gpt4 key购买 nike

我想在序言中创建一个规则,以检查列表中是否有重复的数字。

例如:

  • 表示[1,2,3,4],它将返回true
  • 表示[1,2,3,3],它将返回false,因为3重复了

  • 我想出了这条规则,但是没有用
    Different([]).
    Different([H|T]):-
    Member(H,T),
    Different(T).

    有任何想法吗?

    最佳答案

    一个紧凑的定义可能是

    all_diff(L) :- \+ (select(X,L,R), memberchk(X,R)).

    也就是说,如果我们不能窥视一个元素并在其余元素中找到它,那么所有元素都是不同的...

    编辑

    让我们(略微)提高效率:检查X是否是前缀子列表的成员是没有用的,所以:
    all_diff(L) :- \+ (append(_,[X|R],L), memberchk(X,R)).

    关于prolog - 检查列表中的所有数字在序言中是否都不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20131904/

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