如何在 clingo 中使用数据结构而不是命令行参数 - (ASP)

How to use data structures instead of command line arguments with clingo - (ASP)

我从逻辑编程开始,我正在开发一个简单的程序来查找节点之间的最短路径。我唯一能真正理解的教程是关于命令参数的。

有没有一种方法可以将程序中的 Args 替换为列表等硬编码结构? asp 可以吗?

import com.sap.cxlabs.bewater.logic.asp._
val shortestPath = SModels(Args( %here is where I'd like to use a data structure.
 p.path(X, Y, W) :-(p.start(X), p.edge(X, Y, W)),
 p.path(X, Z, A + B) :- (p.path(X, Y, A), p.edge(Y, Z, B)),
 p.shortest(W) :- (p.end(Y), p.path(X, Y, W), not p.path(X, Y, Z), W < Z),
))
shortestPath.deduct(facts)

编辑 Args 是开始节点、结束节点、边缘

我检查了指南和示例,只发现了实际需要从命令行调用 clingo 的示例,尽管您可以在程序中的 #script 标记中使用 python 代码。例如这个:https://github.com/potassco/clingo/blob/master/examples/clingo/addclause/addclause-py.lp

不过,我通常只将 clingo 用作 python 库,您可以在此处找到一些示例代码: https://github.com/peschue/ai4eu-sudoku/blob/master/aspsolver/server.py