2017-06-05 5 views
3

私はPrologを初めて使っていますが、私は基礎を学びます。ファイルの読み込みに問題があります。ここに私のファイルは、次のとおりです。Swi Prolog、ファイルの例を読む

16 
78 45 12 32 457 97 12 5 731 2 4 55 44 11 999 7 

私は数字として文字を取り戻すようにそれを読むことをお勧めします。問題は、最初の行が2行目に数字の量をあるある:SPACEまたはNEW LINEキャラクターの上にそれらを分割する方法

1)

2)彼らは数字でなければならない:32、ではない文字列:「32 "

私はSWI-Prologを使用しています。ここで

+0

https://stackoverflow.com/questions/4805601/read-a-file-line-by-line-in-プロローグ – tso

+2

私はこの投稿を見て、それは助けにはなりません。最初の答えは文字コードを返しますが、数字が必要です。もう一つは私にエラーを与えます。私はリストや何かで私に利用可能な番号が必要なので、後でそれらを処理することができます –

答えて

3

は私の実装です:

my_read_file(File,Firt_Number ,List):- 
    open(File, read, Stream), 
    read_line(Stream, [Firt_Number]), 
    read_line(Stream, List), 
    close(Stream). 

read_line(Stream, List) :- 
    read_line_to_codes(Stream, Line), 
    atom_codes(A, Line), 
    atomic_list_concat(As, ' ', A), 
    maplist(atom_number, As, List). 

例:

?- my_read_file("file.txt",N,L). 
N = 16, 
L = [78, 45, 12, 32, 457, 97, 12, 5, 731, 2, 4, 55, 44, 11, 999, 7] .