Prolog返回变量名而不是值

时间:2015-04-11 21:33:57

标签: prolog

我有一种方法可以在建造塔时检查下一块砖的放置位置。

freePosition(POS, LEVEL) :- levelWithSpace(LEVEL),
                            freePositionOnLevel(POS, LEVEL).

此方法检查具有空格的级别,并询问此级别的空闲位置。 在我的情况下,它应该返回两个结果:

  • POS = 1,LEVEL = 2
  • POS = 2,LEVEL = 2

然而,它返回以下输出:

?- freePosition(POS, LEVEL).
POS = 1,
LEVEL = 2 ;
POS = LEVEL, LEVEL = 2 ;

如何更改返回POS = 2而不是POS = LEVEL?

的行为

1 个答案:

答案 0 :(得分:3)

您可以使用内置format/2发出格式化字符串:

?- freePosition(POS, LEVEL),
   format('Pos = ~d, Level = ~d~n', [POS,LEVEL]).

无论您使用何种Prolog实现,都可以轻松获得统一的输出样式。

请注意,Prolog解释器顶层提供的具体答案风格在不同的Prolog实现之间有很大不同。