KDB+/Q:填充不规则列表列表(矩阵)的有效方法

KDB+/Q: Efficient way of padding an irregular list of lists (matrix)

给定以下列表:

q)m
  1 1
  1 1 
  1 1 1

生成正则矩阵(用0填充空格)的有效方法是什么,如下所示:

q)m
  1 1 0
  1 1 0
  1 1 1

谢谢

一种方法如下:

q)m:(1 1;1 1;1 1 1)
q){x,'(max[c]-c:count each x)#'0}m
1 1 0
1 1 0
1 1 1

只需找到最长行与其他行之间的长度差,并附加该数量的零。

下面的迭代条件语句也应该有效,其中 0 附加到每行的末尾,直到它达到最长行的长度。

q)m:(1 1;1 1;1 1 1)
q){{x,0}/[{(max count each m)>(count x)};x]}'[m]
1 1 0
1 1 0
1 1 1