我正在尝试以以下格式打印矩阵,但不确定如何。所以这是我要打印的格式。
************
***35****35*
***2938**28*
**28*2358*32
*3512**23*93
*28*3258*328
**92*329*21*
*318*5913*13
*53*28**2345
*84*8125*21*
**13**5329**
**12****58**
这就是我创建矩阵的方式,需要进行哪些更改才能像上面那样打印出来?
:- use_module(library(clpfd)).
%Create Matrix
setMatrix(N, Matrix) :-
length(Matrix, N),
maplist(length_list(N), Matrix).
length_list(L, Ls) :- length(Ls, L).
在回答实际问题之前,请注意以下几点:
考虑实体之间的关系,并描述持有的东西。在这种情况下,“创建”,“设置”等措辞没有任何意义:所描述的实体通过以多种方式描述它们而形成,例如,直接将它们写下来。
考虑到之前的观点,您可以使用例如:
n_matrix(N, Matrix) :-
length(Matrix, N),
maplist(same_length(Matrix), Matrix).
请注意,它n_matrix/2
可以在所有方向上使用,包括:使用部分填充的矩阵, N
从给定或部分实例化的矩阵确定,测试矩阵是否为N×N矩阵等。因此,我们选择了一个包含所有此类用法的名称。通过陈述性措辞,通过陈述每个论点代表什么来同时案例。
现在,针对实际问题:
尝试回答更简单的问题:
你将如何打印单行这个矩阵在你想要的方式?
一种方法是:
print_row(Ls) :- maplist(write, Ls), nl.
现在,您可以轻松地将其应用于打印整个矩阵:
?-n_matrix(N,Ms),maplist(print_row,Ms)。
当描述了名单的关系,它往往是一个很好的策略,先定义为单个元素之间的关系,然后使用元谓词小号maplist/2
或maplist/N
描述整个列表的关系。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句