0

次のコードで X = [[1,2,3,4,5,6],[6,5,4,3,2,1]|...] をファイルに書き込みました。

?-tell('test.txt'),maplist(format('~d ~d ~d ~d ~d ~d ~n'),X),told.

$cat test.txt
1 2 3 4 5 6
6 5 4 3 1 1
...

そして、次のコードを使用して復元します。

?-open("test.txt",read,F),read_stream_to_codes(F,N),write(N),close(F).
N = [49, 50, 51, 52, 53, 54 ...]

N を [[1,2,3,4,5,6],[6,5,4,3,2,1]...] に変換する最良の方法は何ですか?

心から!

4

1 に答える 1

1

私は一度に1行を実行します:

:- use_module(library(dcg/basics)).

ints(L) --> blanks, (integer(I), ints(Is), {L = [I|Is]} ; {L = []}).

read_ints(F, L) :-
    open(F, read, S),
    file_ints(S, L),
    close(S).

file_ints(S, L) :-
    read_line_to_codes(S, Cs),
    (   Cs == end_of_file
    ->  L = []
    ;   phrase(ints(Is), Cs),
        file_ints(S, R),
        L = [Is|R]
    ).
于 2013-01-17T09:08:49.567 に答える