因此,我的老师给我一个保证,对我来说,这似乎超出了我的学习范围,或者至少是在我的课堂上,也许是因为我们几乎没有实践过序言,所以我要做的就是编写一个序言程序来解决“ mindgames”页面上的game Blobs,我想我可以在python或C ++上执行此操作,因为我熟悉此代码,但是我一点都不熟悉prolog,我在很多方面都在努力。这就是我应该做的:
最近我所做的是在网络上搜索如何制作列表,如何使用矩阵以及实际上试图了解其工作原理。但是序言没有以我容易理解的方式记录在案。我的老师说我应该这样解决问题:
从互联网上,我找到了nighborgs,以及如何将列表索引到矩阵中,但是仅此而已,我想我不了解prolog如何做到这一点。
我有什么,我不知道这是否可以解决我的问题
:- use_module(library(clpfd)).
% at, permite indexar la matriz
at(Mat, [Row, Col], Val) :-
nth1(Row, Mat, ARow),
nth1(Col, ARow, Val).
% indices, generador de indices de la matriz
add(X,L,Ls) :-
Ls = [X|[L]].
indices1(L,X,Ls) :-
maplist(add(X),L,Ls).
indices2(L1,L2,Li) :-
maplist(indices1(L2),L1,Ls),
append(Ls,Li).
indices(M,N,Is) :-
numlist(1,M,LMs),
numlist(1,N,LNs),
indices2(LMs,LNs,Is).
% vecino, posiciones vecinas de [X,Y]
% vecino([X,Y],[X,Y1]) :- Y1 #= Y+1.
% vecino([X,Y],[X,Y1]) :- Y1 #= Y-1.
% vecino([X,Y],[X1,Y]) :- X1 #= X+1.
% vecino([X,Y],[X1,Y]) :- X1 #= X-1.
vecino([X,Y],[X1,Y1]) :- abs(X-X1)+abs(Y-Y1) #= 1. % compact
谢谢。