gpt4 book ai didi

Prolog - 数组数组,返回数组长度大于一的条目

转载 作者:行者123 更新时间:2023-12-05 06:49:07 26 4
gpt4 key购买 nike

我对逻辑编程还很陌生。

这个程序的目的是返回所有兄弟组的列表。我目前正在像这样组织家长/ child 小组:

/* Where Banana is the parent */
child_of(Apple, Banana).
child_of(Grape, Banana).
child_of(Pear, Banana).
child_of(Apricot, Pear).

display_siblings(X) :-
findall(Siblings,
bagof(
C,
child_of(_, C), Siblings),
X).

这不仅会返回所有 sibling 组,而且似乎会返回所有只有一个 child 可用的家庭组。

例如:

[[Apple, Grape, Pear], [Apricot]]

我的第一个想法是使用这个谓词:

not_just_one([X,Y]]) :-
length(X, len),
len \= 1,
not_just_one(Y).

这给我以下错误:Illegal start of term

如何更改 display_siblings 以仅允许存在多个 child 的 sibling 对?

最佳答案

我的谓词最终看起来像这样:

yokatta(C,Siblings) :-
bagof(C, child_of(_, C), Siblings),
length(Siblings, X),
X > 1.

display_siblings(Ss) :-
findall(Siblings, yokatta(C,Siblings), Ss).

之所以可行,是因为它抽象了每个列表,然后将结果隔离为长度得分大于 1 的结果。

关于Prolog - 数组数组,返回数组长度大于一的条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66648781/

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