prolog - 如何将板值从 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), !.
解决方案
推荐阅读
- elixir - 返回正确的时间戳
- swagger - 无效的范围 Swagger 和 IdentityServer4
- python - 更改科学轴标签格式的偏移量
- python-3.x - 如何从 openai gym 的自定义环境中调用自定义属性?
- javascript - 具有多个条件的过滤器数组
- java - Ldap 单元测试模拟命名枚举
- apache - help.example.com 的 DNS 记录返回 404
- php - 使用 php artisan migrate refresh 时,laravel 5.8“调用未定义的方法 car:SetContainer()”
- r - 使用 timedate 或 lubridate 将 1 个工作日添加到日期
- python - 具有协方差/相关性的组的多标签分类