比方说,我们有以下列表
mag = [ [0, 1, 1, 1], [0, 1, 0, 1], [1, 1, 0, 1], [0, 1, 0, 1], ]
问题:需要添加或合并新行,例如[1, 0, 0, 1]
。
规则:如果我添加与某些行重叠的列表,则应根据已与提供的项目重叠的项目来添加或合并列表。
示例(开头的矩阵矩阵):
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.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.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
是一个自由空间。我们需要了解从下到上移动图形的位置。