gpt4 book ai didi

list - 如何对序言中的年龄列表进行排序?

转载 作者:行者123 更新时间:2023-12-04 00:46:20 26 4
gpt4 key购买 nike

我尝试按年龄从大到小排序亲戚列表:

born(kate,date(11,2,1960)).
born(marc,date(11,2,1961)).
born(I,date(9,3,1962)).
born(michel,date(24,4,1963)).
born(harry,date(26,5,1964)).
born(jess,date(16,1,1965)).
born(ruth,date(26,9,1966)).
born(fran,date(4,3,1967)).

结果应该是一个列表:[kate,marc,I,michel,harry,jess,ruth,fran]

我试试@CapelliC 的这个代码片段:

pairs_values([], []).
pairs_values([_-V|T0], [V|T]) :-
pairs_values(T0, T).

by_date(Sorted) :-
findall(Date-Person, born(Person,Date), List),
keysort(List, Pairs),
pairs_values(Pairs, Sorted).

但是这段代码并没有对它进行排序。我需要在 ciao Prolog 中完成。

最佳答案

我们可以在 SWi-Prolog 中使用一些内置函数:

by_date(Sorted) :-
findall(Date-Person, born(Person,Date), List),
keysort(List, Pairs),
pairs_values(Pairs, Sorted).

编辑:pairs_values 这真的很简单:这里是 SWI-Prolog 片段

%%  pairs_values(+Pairs, -Values) is det.
%
% Remove the keys from a list of Key-Value pairs. Same as
% pairs_keys_values(Pairs, _, Values)

pairs_values([], []).
pairs_values([_-V|T0], [V|T]) :-
pairs_values(T0, T).

关于list - 如何对序言中的年龄列表进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9654645/

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