这是我在Prolog中的第一个程序,我遇到了一个问题,有人要求我将板的值从A更改为B,如下所示:
面板尺寸:6列x 6行
单元格的初始值:A
最终细胞值:B
条件:
当A翻转时,它变成B,其邻居翻转为Z。如果其邻居是A,则它们成为B,反之,如果是B,则它们成为A。
在邻居中,它们表示同一行和同一列中的框。这意味着如果我们更改一个单元格的值,其他四个单元格的值也会随之改变。
我一直到处看,观看视频并阅读可用的示例,以了解如何进行。 我不是在要求代码本身,我想了解是否有人可以向我解释如何开始/思考。
我已经尝试过了:
:- dynamic ligne/2.
matrix([
[1,2,3,4,5,6],
[7,8,9,10,11,12],
[13,14,15,16,17,18],
[19,20,21,22,23,24],
[25,26,27,28,29,30],
[31,32,33,34,35,36]
]).
ligne(X, Ligne) :-
matrix(M),
nth0(X, M, Ligne),
assert(ligne(X, Ligne)).
colonne(X, Colonne) :-
matrix(M),
maplist(nth0(X), M, Colonne).
voi_vert(X, Y, Z) :-
ligne(X, Ligne),
Y is X+1,
nth0(Y, Ligne, Z), !.