在球拍中制作矩阵块(由列表表示)
我有一个任务,需要将给定的矩阵划分为块(还给出了宽度和高度并适合矩阵)。矩阵由列表列表表示,其中每个列表都是矩阵中的一行。 例如,
'(( 1 2 3 4)
( 5 6 7 8)
( 9 10 11 12)
(13 14 15 16))
对于给定的 width=height=2,块应为 (1 2 5 6)、(3 4 7 8)、(9 10 13 14)、(11 12 15 16)。
你能帮我吗?
我尝试按高度和宽度分割它,然后遍历并附加列表,但它根本不起作用,我不知道算法应该如何工作。
I have a task where I need to divide the given matrix into blocks (width and height are also given and suite the matrix). The metrix is represented by a list of lists, where every list is a row in the matrix.
For example
'(( 1 2 3 4)
( 5 6 7 8)
( 9 10 11 12)
(13 14 15 16))
for given width=height=2 the blocks should be (1 2 5 6), (3 4 7 8), (9 10 13 14), (11 12 15 16).
Can you please help me with it?
I have trind to split it by height and width, then traverse and append lists, but it doenst work att all, I have no idea how the algorithm should work.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以尝试这个代码 - 它可以工作,但看起来有点复杂,所以也许有更好的方法:
测试:
You can try this code- it works, but it seems a little bit convoluted, so maybe there is some better way:
Test:
这个答案使用宽度和高度来指代块尺寸,并构建块矩阵
(每个块都是一个类似于输入的行列表,因此结果是一个 4 级列表;
如果需要较少的嵌套,可以适当插入
展平
)。计划:将输入转换为平面向量,以正确的顺序获取元素以构建结果。
This answer takes width and height to refer to block dimensions, and builds a matrix of blocks
(each block is a list of rows like the input, so result is a rank 4 list;
if less nesting is required
flatten
s can be inserted appropriately).Plan: convert input to flat vector, fetch elements in correct order to build result.