从PROLOG中的不同谓词打印列表

时间:2014-11-03 12:24:18

标签: printing prolog predicate

我现在正在开始一种新语言(PROLOG),我遇到了一些问题。

我正在开发一个简单的棋盘游戏,我需要打印棋盘。我已经开发了 PrintBoard initialBoard 谓词(如下所示),我希望能够从 main 谓词运行它,就像这样:

printBoard([Head|Tail]) :- 
        printRow(Head),
        printBoard(Tail).
printBoard([]).

printRow([Head|Tail]) :-
        write(Head),
        write('  '),
        printRow(Tail).
printRow([]) :- nl.

initialBoard(Board) :- Board = ([
                                   ['b0','b0','b0','b0','b1'], 
                                   ['b0','b0','b0','b0','b0'], 
                                   ['b0','b0','b0','b0','b0'],
                                   ['b0','b0','b0','b0','b0'],
                                   ['b2','b0','b0','b0','b0']
                                ]).

main :- Board = initialBoard(Board), printBoard(Board).

SICStus PROLOG 中输入main.,程序输出以下内容:

b0 b0 b0 b0 b1
b0 b0 b0 b0 b0
b0 b0 b0 b0 b0
b0 b0 b0 b0 b0
b2 b0 b0 b0 b0

但是,相反,它返回没有。 (返回no)。

它似乎唯一可行的方法是将整个列表作为变量重新插入,就像这样:

main :- printBoard(<insert whole list here>).

即使我想将其作为:

运行
main :- printBoard(initialBoard(Board)).

如果main传递了 Board 参数,则上面的代码部分可以工作,但是可以不传递它吗?

功能代码:

main(Board) :- printBoard(initialBoard(Board)).

0 个答案:

没有答案