我使用Prolog和clpd来解决布尔问题。我有如下这样的规则:用prolog在txt文件中打印结果
:- use_module(library(clpb)).
fun(A, B, C, D, E) :-
sat(A + B + C, D),
sat(E),
labeling([A, B, C, D, E]);
是否可以在文件中打印结果?我能怎么做?
我使用Prolog和clpd来解决布尔问题。我有如下这样的规则:用prolog在txt文件中打印结果
:- use_module(library(clpb)).
fun(A, B, C, D, E) :-
sat(A + B + C, D),
sat(E),
labeling([A, B, C, D, E]);
是否可以在文件中打印结果?我能怎么做?
你的代码有一些简单的错误。你可以试试这个版本(改变了一些小东西):
:- use_module(library(clpb)).
fun(A, B, C, D, E) :-
open('test1234.txt',write,ID),
( sat(A + B + C + D),
sat(E),
labeling([A, B, C, D, E]),
write(ID, labeling([A, B, C, D, E])),nl(ID), fail
; close(ID)
).
如果你现在查询:
?- fun(A,B,C,D,E).
true.
“test1234.txt” 将E在当前工作目录中创建。该“test1234.txt”文件包含:
labeling([0,0,0,1,1])
labeling([0,0,1,0,1])
labeling([0,0,1,1,1])
labeling([0,1,0,0,1])
labeling([0,1,0,1,1])
labeling([0,1,1,0,1])
labeling([0,1,1,1,1])
labeling([1,0,0,0,1])
labeling([1,0,0,1,1])
labeling([1,0,1,0,1])
labeling([1,0,1,1,1])
labeling([1,1,0,0,1])
labeling([1,1,0,1,1])
labeling([1,1,1,0,1])
labeling([1,1,1,1,1])
的http://stackoverflow.com/q/18674731/535275 –
我不知道,如果是重复的可能重复...其他线程说说列表。这里是布尔逻辑,看着另一个线程,我不明白如何在txt上写结果。 – NxA
究竟哪一个结果?你打算如何运行这个程序?你能显示你的文本文件应该包含什么吗? – 2016-11-14 19:55:59