我在Prolog中没有很多编程方面的经验。我正在编写基本矩阵运算的规则。所以我需要对矩阵N
进行这三个操作:
size(+N,-Num): returns n if N is of size n x n
fetch(+N,+I,+J,-Value): returns the (I,J) value of N
store(+N,+I,+J,+Value,-NewN): replaces the (I,J) value of N
例如,我有一个像这样的矩阵:
[ [[b],[d,o],[m,o]],
[[a],[oi,mi,d],[di,fi]],
[[b],[d],[=]] ]
我希望有人能帮助我,谢谢:)
修改
我想我解决了前两个操作。这里是size(N,Num)
操作:
size2(N, Ls) :-
length(Ls, N).
size1(Mss, R, C) :-
length(Mss, R),
maplist(size2(C), Mss).
size(N,M):-
size1(N,R,C),
R = C,
M is R.
此处fetch(N,I,J,Value)
操作:
fetch(Mat, Row, Col, Val) :-
nth1(Row, Mat, ARow), nth1(Col, ARow, Val).
但我不确定如何编写store(N,I,J,Value,NewN)
操作......