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