2

它们存在吗?我编写了一个解决数独难题的程序,运行需要 3 个步骤。

> prolog
> consult(sudoku).
> solve(puzzle).

我正在寻找一种方法来做类似的事情

> prolog puzzle

并完成它。有没有办法在 Prolog 中做到这一点?或者我是否必须用 C 或其他语言编写一些帮助程序才能使用

> ./solve puzzle

任何帮助,将不胜感激。Prolog 还是新手,很难找到好的文档。

4

3 回答 3

3

这取决于您使用的 Prolog 系统。大多数 Prolog 系统都有一个命令行启动,可以在其中提供要查阅的初始 Prolog 文本和要运行的初始 Prolog 目标。

以下是一些示例,我结合了咨询并达成了一个联合目标:

SWI-序言

> swipl -t ['sudoku.p'],puzzle

GNU 序言

> gprolog --entry-goal ['sudoku.p'],puzzle,halt

Jekejeke序言

> java -jar interpreter.jar -t ['sudoku.p'],puzzle

此致

于 2012-04-28T19:27:26.470 回答
2

使用该-g标志,您可以使 Prolog 在进入顶层之前执行您选择的目标。默认是打印欢迎消息的谓词。此外,您可能希望使用-t默​​认目标 prolog/0 替换为您选择的一个作为交互式顶层的标志。

另请参阅手册

于 2012-04-28T19:15:32.813 回答
0

使用optparse

例如,如果您的程序是:

main :-
    opt_arguments([], _, Args),
    write(Args).

你运行它就像./program 1 foo 程序会写 [1,foo]

于 2021-06-05T00:54:24.637 回答