我有这个谓词,它有大约一千种可能性,我需要所有可能性作为输出。不可能在 Windows 上的 SWI-Prolog 中简单地复制和粘贴所有列出的可能性,因为您只能向上滚动这么多。
我的谓词如下所示:
?- question(X,Y,Z).
X = 'Fo',
Y = 'Ob',
Z = 'Ar' ;
X = 'Fo2',
etc...
我想知道是否有办法将结果保存在文件或其他东西中?
我有这个谓词,它有大约一千种可能性,我需要所有可能性作为输出。不可能在 Windows 上的 SWI-Prolog 中简单地复制和粘贴所有列出的可能性,因为您只能向上滚动这么多。
我的谓词如下所示:
?- question(X,Y,Z).
X = 'Fo',
Y = 'Ob',
Z = 'Ar' ;
X = 'Fo2',
etc...
我想知道是否有办法将结果保存在文件或其他东西中?
使用 findall/3:
findall([X,Y,Z],question(X,Y,Z),R).
R 应绑定到所有 [X,Y,Z] 的列表,以便 question(X,Y,Z) 成功。
有关更多信息,请参阅:Findall 上的文档
你可以使用这样的东西:
main :-
tell('output.txt'),
(
question(X,Y,Z),
writeln([X, Y, Z]),
fail
;
told
).
或者,您可以( question(X,Y,Z), writeln([X, Y, Z]), fail ; true ).
在 Prolog 中运行查询并在标准输出(屏幕)中获取所有解决方案。