如何在序言中以以下格式打印矩阵

MVP

我正在尝试以以下格式打印矩阵,但不确定如何。所以这是我要打印的格式。

************
***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).

在回答实际问题之前,请注意以下几点:

  1. 考虑实体之间关系,并描述持有的东西。在这种情况下,“创建”,“设置”等措辞没有任何意义:所描述的实体通过以多种方式描述它们而形成,例如,直接将它们写下来。

  2. 考虑到之前的观点,您可以使用例如:

    n_matrix(N, Matrix) :-
            length(Matrix, N),
            maplist(same_length(Matrix), Matrix).
    
  3. 请注意,它n_matrix/2可以在所有方向上使用,包括:使用部分填充的矩阵, N从给定或部分实例化的矩阵确定,测试矩阵是否为N×N矩阵等。因此,我们选择了一个包含所有此类用法的名称。通过陈述措辞,通过陈述每个论点代表什么来同时案例

现在,针对实际问题:

尝试回答更简单的问题:

你将如何打印单行这个矩阵在你想要的方式?

一种方法是:

print_row(Ls) :- maplist(write, Ls), nl.

现在,您可以轻松地将其应用于打印整个矩阵:

?-n_matrix(N,Ms),maplist(print_row,Ms)

当描述了名单的关系,它往往是一个很好的策略,先定义为单个元素之间的关系,然后使用小号maplist/2maplist/N描述整个列表的关系。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章