任意数据的Prolog代码(因此不必硬编码)

时间:2013-10-26 23:45:39

标签: input prolog

目前我正在编写一个Prolog程序,处理从一个位置到另一个位置的各种不同方法,并计算这些路径的距离。

到目前为止,我一直在将我的数据子句硬编码到我的代码中作为测试目的的快速解决方法,但我需要编写我的代码,使得具有适当格式化数据的数据文件可以是阅读该计划。

例如,

path(1, 4).
setRoutes([[1, 2, 45], [1, 3, 135],
           [2, 4,135], [3, 4, 45]] ).

将是输入数据的格式,因此我将其硬编码到我的程序中。以下不是输入数据的一部分,但我也将其硬编码以用于我的程序。如何使实际输入的信息“通用”,同时使我自己的代码相对于原始输入“通用”?

linkedPoints(1, 2).
linkedPoints(1, 3).
linkedPoints(2, 4).
linkedPoints(3, 4).

我的问题是:如何将数据硬编码到程序本身,以创建将用户输入或文件输入数据读取的“模板”?

如果我需要澄清这一点,请告诉我......感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

这很简单:您可以使用内置谓词read/1从(例如)文件中读取Prolog术语。因此,只要您的数据在您的示例中表示,无论它是放在程序本身还是其他位置都没有什么区别,因为Prolog术语可以在Prolog中轻松处理。

AnotherThingThoughIsYourNamingConventionForExamplelinkedPoints/2is_it_not_much_more_readable_to_use_underscores_like_linked_points/2