我尝试了很多思考如何在阅读时在排序列表中添加值,但我没有弄清楚。
我必须从文件中逐行读取值并将它们添加到排序列表中的正确位置。
SWI-PROLOG
如果我有 input.txt : 1. 4. 2. 3. 8. 6.
我必须阅读列表 1 中的 1。阅读 4 --> 我的列表是 1 4 。阅读 2 ---> 我的清单是 1 2 4 .. 等等。
读取和插入功能:
main :-open('input.txt', read, Str),read_file(Str,Lines),close(Str),write(Lines), nl.
read_file(Stream,[]) :-at_end_of_stream(Stream).
read_file(Stream,[X|L]) :-\+ at_end_of_stream(Stream),read(Stream,X),read_file(Stream,L).
insert(X,[Y|Sorted],[Y|Sorted1]):-X>Y,!,insert(X,Sorted,Sorted1).
insert(X,Sorted,[X|Sorted]).
我试图创建一个函数来读取(Stream,X)并将 X 传递给 insert(X,[],[]),或者将其放入 read_file 函数列表参数中(并且确定未定义)。从逻辑上讲,第一步是可以的,但我不知道如何进入下一步。没有想法。