0
在Prolog,我現在已經是,Prolog的簡單的排序
:-dynamic listofPeople/2.
listofPeople(Mark,Name).
基本上包含了每個學生的標誌。
我想打印出最好的3分。
要做到這一點,我相信我必須做排序。如果我排序,我將失去學生姓名的順序。
正如你可以理解的默認情況下,我想要的只是排序標記,並根據標記排序名稱。
請幫忙。代碼片段表示讚賞。
在Prolog,我現在已經是,Prolog的簡單的排序
:-dynamic listofPeople/2.
listofPeople(Mark,Name).
基本上包含了每個學生的標誌。
我想打印出最好的3分。
要做到這一點,我相信我必須做排序。如果我排序,我將失去學生姓名的順序。
正如你可以理解的默認情況下,我想要的只是排序標記,並根據標記排序名稱。
請幫忙。代碼片段表示讚賞。
您可以從創建鍵值對列表開始,對它進行排序並打印前3個等級。
go(G1,G2,G3) :- findall(Grade-Name, listofPeople(Grade,Name), List),
keysort(List, [G1-_,G2-_,G3-_|SortedList]).
如果您的分數少於三個,謂詞將失敗。
如果除了等級要具有名稱:
go(N1-G1,N2-G2,N3-G3) :- findall(Grade-Name, listofPeople(Grade,Name), List),
keysort(List, [G1-N1,G2-N2,G3-N3|SortedList]).
感謝您的幫助:) – HungryCoder