我在 prolog 上遇到了问题
程序会要求输入一些元素:6
然后用户将输入 6 个数字 , 4, 3, 6, 2, 9, 10
那么prolog会升序排列
排序列表:2 3 4 6 9 10
答案 0 :(得分:0)
1- 使用 read 输入前六位数字。
2- 将它们全部放在一个列表中。列表=[X1,X2,X3,X4,X5,X6]
3- 现在使用内置的排序谓词。您可以使用其中的任何一个 sort/2 参数或 sort/4 参数。两者之间的区别在于,在 sort/2 中,它将删除重复值 ([4,1,5,5,2] -> [1,2,4,5]),而在 sort/4 中,它将保留重复值重复值 ([4,1,5,5,2] -> [1,2,4,5,5]).
start:-
writeln('Enter First digit'),
read(X1),
writeln('Enter Second digit'),
read(X2),
writeln('Enter Third digit'),
read(X3),
writeln('Enter Fourth digit'),
read(X4),
writeln('Enter Fifth digit'),
read(X5),
writeln('Enter Sixth digit'),
read(X6),
List=[X1,X2,X3,X4,X5,X6],
% sort(List,Sorted),
sort(0,@=<,List,Sorted),
write('Sorted:'),write(Sorted).
示例:
?- start.
Enter First digit
4
Enter Second digit
1
Enter Third digit
5
Enter Fourth digit
5
Enter Fifth digit
2
Enter Sixth digit
8
Sorted: [1, 2, 4, 5, 5, 8]
1true
答案 1 :(得分:0)
考虑到元素的数量可能会有所不同,一个可能的解决方案是:
main :-
writeln('Number of items? '),
read(N),
length(L, N),
maplist(read, L),
sort(L, S),
format('Sorted list: ~w~n', [S]).