Swi Prolog,阅读文件示例

时间:2017-06-05 12:05:34

标签: prolog readfile

我是Prolog的新手,但我得到了基础知识。我在阅读文件时遇到问题。这是我的档案:

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

我想阅读它,以便将字符作为数字取回。第一行是第2行的数字。问题是:

1)如何在SPACE或NEW LINE角色上分割它们

2)它们必须是数字:32,而不是字符串:“32”

我正在使用SWI-Prolog。

1 个答案:

答案 0 :(得分: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] .