它们存在吗?我编写了一个解决数独难题的程序,需要3个步骤才能运行。
> prolog
> consult(sudoku).
> solve(puzzle).
我正在寻找一种方法来做像
这样的事情> prolog puzzle
并完成它。在Prolog中有没有办法做到这一点?或者我是否必须用C或其他语言编写一些帮助程序来使用
> ./solve puzzle
任何帮助将不胜感激。对Prolog来说仍然是新手,并且无法找到好的文档。
答案 0 :(得分:3)
这取决于您使用的Prolog系统。大多数Prolog系统都有一个命令行 开始可以提供一个初步的Prolog文本进行咨询和 最初的Prolog目标将被运行。
以下是一些例子,我将咨询结合起来并融入了一个联合目标:
> swipl -t ['sudoku.p'],puzzle
> gprolog --entry-goal ['sudoku.p'],puzzle,halt
> java -jar interpreter.jar -t ['sudoku.p'],puzzle
最好的问候
答案 1 :(得分:2)
使用-g
标志可以让Prolog在进入顶级之前执行您选择的目标。默认值是一个打印欢迎消息的谓词。此外,您可能希望使用-t
标志来替换您选择的默认目标prolog / 0作为交互式顶级。
另见the manual。
答案 2 :(得分:0)
使用optparse
例如,如果您的程序是:
main :-
opt_arguments([], _, Args),
write(Args).
然后你像 ./program 1 foo
一样运行它
程序会写 [1,foo]