首页 > 解决方案 > 如何将板值从 A 更改为 B

问题描述

这是我在 Prolog 中的第一个程序,我遇到了一个问题,我被要求将板值从 A 更改为 B,如下所示:

板尺寸:6列x 6行

单元格的初始值:A

最终单元格值:B

健康)状况 :

当一个 A 被翻转时,它变成了一个 B,并且它的邻居被翻转了 Z。如果它的邻居是 A 的,它们就会变成 B 的,反之,如果它们是 B 的,它们就会变成 A 的。

邻居是指同一行和同一列中的框。这意味着如果我们改变一个单元格的值,其他 4 个单元格的值也会改变。

我一直在到处寻找,观看视频并阅读可用的示例,以了解我将如何进行。我不是要代码本身,我想了解是否有人可以向我解释如何开始/思考。

我试过这个:

    :- 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), !.

标签: prolog

解决方案


推荐阅读