【发布时间】:2019-08-03 00:44:35
【问题描述】:
假设我们有以下列表
mag = [ [0, 1, 1, 1], [0, 1, 0, 1], [1, 1, 0, 1], [0, 1, 0, 1], ]
问题:需要添加或合并新行,如[1, 0, 0, 1]。
规则:如果我添加与某些行重叠的列表,则应根据与提供的项目重叠的项目来附加或合并它。
示例(开头的mag矩阵):
mag.add([0, 0, 1, 0]) [ [0, 1, 1, 1], # << -- here is were overlapped [0, 1, 1, 1], # << -- here will be merged [1, 1, 0, 1], [0, 1, 0, 1], ]
示例2(开头的mag矩阵):
mag.add([0, 1, 0, 0]) [ [0, 1, 1, 1], [0, 1, 0, 1], [1, 1, 0, 1], [0, 1, 0, 1], # << -- overlaps first list from end, will be appended [0, 1, 0, 0], ]
示例3(开头的mag矩阵):
mag.add([1, 0, 0, 0]) [ [0, 1, 1, 1], [0, 1, 0, 1], [1, 1, 0, 1], # << -- overlaps here [1, 1, 0, 1], # << -- here were merged ]
为了更清楚,假设这是俄罗斯方块,其中[0, 1, 0, 1] 之类的新列表是一个图形,其中1 是一个块,0 是一个空闲空间。如果图形从底部移动到顶部,我们需要了解图形可能在哪里。
【问题讨论】:
-
到目前为止你尝试了什么?
-
我试图思考如何在不遍历所有列表的情况下实现它。
-
我不明白您如何确定要合并的行,看起来您并不总是从列表的同一端开始。
-
有点像俄罗斯方块,但从底部开始,1是块,0是空闲空间。