我正在使用 SWI-Prolog 和clpr库来解决对实数的约束。我通过从命令行调用 SWI-Prolog并通过另一个程序解析输出来做到这一点。
例如,要解决类似{F = 1.8 * C + 32}, {C = 25}.
我生成以下命令的问题:
swipl \
-g "use_module(library(clpr))" \
-g "{F = 1.8 * C + 32}, {C = 25}, write(\"F -> \"), write(F), write(\"\\n\")" \
-g halt
SWI-Prolog 的输出是:
F -> 77.0
如果结果是纯数字,但如果结果再次是约束(或更复杂的解决方案),则此方法效果很好。例如,{X > 3}, {Y < 5}, {X + Y = 10}.
我在 SWI-Prolog 环境中获得了解决方案{Y < 5.0, X = 10.0 - Y}
,但我没有找到将其写入命令行输出的方法。有没有办法做到这一点?