読みながらソートされたリストに値を追加する方法を考えてみましたが、わかりませんでした。
ファイルから行ごとに値を読み取り、ソートされたリストの正しい位置に追加する必要があります。
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]).
read(Stream,X) 関数を作成し、X を insert(X,[],[]) に渡すか、read_file 関数のリスト パラメータに配置しようとしました (そして、確実に未定義になります)。論理的には最初のステップは問題ありませんが、次のステップに進む方法がわかりませんでした。アイデアはありません。