网格中的Prolog检查元素

时间:2018-10-03 19:34:00

标签: prolog

grid([
[w, w, w, b, w],
[b ,b, w, w, w],
[w, w, w, b, w],
[w, b, b, b, b],
[w, w, w, w, w] ]).

当我有一个像这样的网格时,我想检查一个单元格是否为白色。输入查询时:

white(X/Y).

如果单元格确实是白色,则应该说是正确的。我做到了:

white(X/Y) :- grid([[w]]).

但是它不起作用,我也不知道为什么。 (我刚刚开始学习序言)

2 个答案:

答案 0 :(得分:3)

谢谢,我明白了。

 white(X/Y) :-
        grid(G),
        nth1(Y, G, YAxisGrid),
        nth1(X, YAxisGrid, w).

答案 1 :(得分:0)

使用民俗谓词nth1进行尝试:

white(X/Y,G) :-
   nth1(Y, G, R),
   nth1(X, R, w).

我得到:

?- grid(G), white(3/2,G).
G = ....

?- grid(G), white(2/2,G).
false.