List 序言:按字母顺序排列列表
我有以下问题,我应该按照字母顺序排列一个只包含字符串的列表,只使用'bagof','findall','setoff',我不支持使用任何排序算法 下面是我必须列出的.pl文档的内容List 序言:按字母顺序排列列表,list,sorting,prolog,prolog-setof,List,Sorting,Prolog,Prolog Setof,我有以下问题,我应该按照字母顺序排列一个只包含字符串的列表,只使用'bagof','findall','setoff',我不支持使用任何排序算法 下面是我必须列出的.pl文档的内容 musico('R. Stevie Moore'). musico('Lane Steinberg'). musico('Yukio Yung'). musico('Jessie Evans'). musico('Miguel'). musico('Lucia Pamela'). musico('Shooby Tay
musico('R. Stevie Moore').
musico('Lane Steinberg').
musico('Yukio Yung').
musico('Jessie Evans').
musico('Miguel').
musico('Lucia Pamela').
musico('Shooby Taylor').
musico('Tiny Tim').
musico('The Legendary Stardust Cowboy').
以下是我到目前为止的情况:
all_musicians([Z]) :-
findall(X, musico(X), Z).
这使得列表包含所有音乐家,但现在我似乎不知道如何排序。
setof/3
是您想要的,因为它会生成一个排序结果列表
all_musicians(Z) :-
setof(X, musico(X), Z).
setof可以用于对只包含一种变量的所有类型的列表进行排序吗?如果列表包含多种类型的变量怎么办?@eXistanCe只需阅读文档,特别是
sort/2
排序以及“术语的标准顺序”的含义。@eXistanCe是的,setof/3
或sort/2
可以对所有类型的列表元素进行排序。您应该阅读解释规则的文档。请记住,setof
是bagof
+排序
。但是为什么您没有阅读setof
和bagof
的文档呢?