Prolog:按字母顺序排序

时间:2015-10-06 07:51:04

标签: list sorting prolog prolog-setof

我有以下问题,我应该只使用' bagof',' findall',' setoff&来按字母顺序订购仅包含字符串的列表#39; ,我不会使用任何排序算法。

以下是.pl文档的内容,我必须使用。

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).

这使得列表包含所有音乐家,但现在我似乎无法理解如何订购它。

1 个答案:

答案 0 :(得分:2)

setof/3是你想要的,因为它产生了一个排序的结果列表。

all_musicians(Z) :- 
    setof(X, musico(X), Z).