Sorting prolog排序和打印最佳3

Sorting prolog排序和打印最佳3,sorting,prolog,Sorting,Prolog,我现在有的是, :-dynamic listofPeople/2. listofPeople(Mark,Name). e、 g 我想要这样- 92, 'Abdul' 33, 'Izz' 19, 'Jos' 基本上包含每个学生的分数 我想打印最好的3个标记 要做到这一点,我必须进行排序。如果我进行排序,我将丢失学生姓名的顺序 默认情况下,您可以理解,我只想对标记进行排序,并根据标记更改名称的位置,因此在打印时 我得到上面的输出 代码片段很受欢迎。在打印之前,你能不能按标记对列表排

我现在有的是,

   :-dynamic listofPeople/2.
    listofPeople(Mark,Name).
e、 g

我想要这样-

92, 'Abdul'
33, 'Izz'
19, 'Jos'
基本上包含每个学生的分数

我想打印最好的3个标记

要做到这一点,我必须进行排序。如果我进行排序,我将丢失学生姓名的顺序

默认情况下,您可以理解,我只想对标记进行排序,并根据标记更改名称的位置,因此在打印时

我得到上面的输出


代码片段很受欢迎。

在打印之前,你能不能按标记对列表排序,取前3名,然后按名称排序?

你能不能在打印之前按标记对列表排序,取前3名,然后按名称排序?

我在下面的一个帖子中回答了你:

go(N1-G1,N2-G2,N3-G3) :- findall(Grade-Name, listofPeople(Grade,Name), List), 
                         keysort(List, [G1-N1,G2-N2,G3-N3|SortedList]).

在你的输入中,go(X,Y,Z)会产生
X='Abdul'-92,Y='Izz'-33,Z='Jos'-19
,我在下面的一个帖子中回答了你:

go(N1-G1,N2-G2,N3-G3) :- findall(Grade-Name, listofPeople(Grade,Name), List), 
                         keysort(List, [G1-N1,G2-N2,G3-N3|SortedList]).

在你的输入中,
go(X,Y,Z)
的结果是,
X='Abdul'-92,Y='Izz'-33,Z='Jos'-19

只需澄清一点:你有一个事实的集合,比如listOfPeople(19,'Jos'),你想打印那些按名字排序的前3个标记吗,我有一个带标记的名字集合。只是要明确一点:你有一个事实集合,比如listOfPeople(19,'Jos'),你想打印那些带前3个标记的名字,按名字排序?没错,我有一个带标记的名字集合。这正是我想要做的。按标记对列表排序。我该怎么做呢。我的问题是,有两种数据类型,int-String。如何仅对整数部分进行排序?如果它是整数列表,您将如何进行排序?排序(输入、输出)。但在这里,我需要将标记与各自的名称联系起来,因此无法做到:(这正是我想做的。按标记对列表进行排序。我该如何做。我的问题是,有两种数据类型,int String。我该如何仅对int部分进行排序?如果它是整数列表,您将如何进行排序?排序(输入,输出)。但在这里,我需要将标记与各自的名称链接,因此无法进行排序。:)太棒了。这正是我想要的。对不起,没有人回答我的问题,所以我又问了一次更详细的问题。你能看看我的另一个问题吗?太棒了。这正是我想要的。对不起,没有人回答我的问题,所以我又问了一次更详细的问题。你能看看我的问题吗有什么问题吗?