如何将从prolog程序获得的所有解决方案写入文件?写入gprolog中的文件
2
A
回答
4
简短的回答是将调用嵌套到重复/失败循环中的“解决方案”谓词,在倒数第二步将解决方案写入文件。
由于这篇文章很少涉及涉及什么样的解决方案的细节(并且因此术语的写作可能是多么困难,例如,如果希望能够通过读取写入的文件来重新实例化一个或多个术语在某个时刻),让我们从一个简单的例子开始,其中解决方案只是整数。
我们有以下的非确定性谓词:
mySolution(X) :- for(X,1,10).
注为/ 3为GNU Prolog的一个内置的谓词。 SWI-Prolog在/ 3和Amzi之间有类似的谓词。 Prolog有用于/ 4,并带有额外的参数,允许增量为+1以外的值。用户实现将是:
for(Low,Low,High) :- Low =< High.
for(New,Low,High) :-
Now is Low + 1,
Now =< High,
for(New,Now,High).
使得目标mySolution(X)
会以可预测的有限数量的方式取得成功。
文件输出可以通过使用GNU-Prolog的流功能或通过执行控制台输出的命令行重定向来实现。我们将说明第一种可能性,尽管第二种可能在许多情况下更简单和更灵活。
main :-
open('myOutput.txt',write,ID),
( (mySolution(X), write(ID,X), nl(ID), fail)
; close(ID)
).
像许多Prolog的实现,GNU-Prolog的提供上写谓语几个流和非流变种,你可以找到here the relevant documentation。对于开放和关闭看在this link和that link。
补充:我扔在NL/1调用输出文件分开的解决方案。
相关问题
- 1. 将输入文件重定向到GProlog
- 2. 写入文件
- 3. 写入文件
- 4. 写入文件?
- 5. gprolog最长的子集
- 6. 在Monotouch中写入文件
- 7. 写入文件到其中
- 8. 写入文件中NServiceBus
- 9. 在文件中写入列
- 10. 在文件中写入
- 11. 在Python中写入文件
- 12. 从文件中写入行
- 13. 在Clojure中写入文件
- 14. 将文本写入文件的中间
- 15. python写入文件不写
- 16. 写入plist文件不写
- 17. C写()不写入文件
- 18. BufferedWriter写入文件
- 19. C++:写入文件
- 20. 写入PHP文件?
- 21. Java写入文件
- 22. 写入文件c
- 23. 写入新文件
- 24. 写入xml文件
- 25. 写入xml文件
- 26. gzip文件写入
- 27. 将文件写入
- 28. 写入.log文件
- 29. 写入文件和\?
- 30. 写入.doc文件
其实,有一些非常接近的问题。 http://stackoverflow.com/questions/4736384/writing-in-file-swi-prolog-windows – 2011-04-26 13:10:10