我有一个这样的列表,我正在尝试排序:
[(tim,3),(tom,4),(jane,2),(mary,3)]
我想重新排列它,以便它按降序排列:
[(tom,4),(mary,3),(tim,3),(jane,2)]
我有一个谓词提取给定数字的列表:
extractor([],[],[],_).
extractor([(Name, Number)|List], [(Name, Number)|NewList], Extracted, Number):-
extractor(List, NewList, Extracted, Number),
!.
extractor([A|List], NewList,[A|Extracted], Number):-
extractor(List, NewList, Extracted, Number).
所以给定一个数字,它应该给我一个包含这些数字的元素列表,并有一个没有这些元素的提取列表。
然后我把它通过排序。我有一个最高数字,它应该从 0 循环到那个数字,提取那个数字的任何元素。直到我有排序列表。
numberSort([], _, 0).
numberSort(Unsorted, Sorted, HighestNumber):-
extractor(Unsorted, Sorted, ExtractedList, Counter),
numberSort(ExtractedList, Sorted, Counter),
HighestNumber is 1 + Counter.
numberSort(Unsorted, Sorted, HighestNumber):-
numberSort(Unsorted, Sorted, Counter),
HighestNumber is 1 + Counter.
但是,当我尝试这个时,它只是经历了一个无限循环。有人可以帮助我并告诉我哪里出错了吗?谢谢,