考虑“字符串”(将其视为数字数组)
0 0 1 8 8 8 1 0
RLE(“groupby”)是:
[(0,2), (1, 1), (8,3), (1, 1), (0, 1)]
然后,我们用前面元素的运行长度之和来丰富上述 RLE。
因此,上述内容的丰富版本变为:
[(0, (0,2)), (0+2, (1, 1)), (0+2+1, (8,3)), (0+1+2+3, (1, 1)), (0+1+2+3+1, (0, 1))]
“字符串”拆分为 1:
0 0 , 8 8 8 , 0
RLE 拆分为 1
[(0,2)] , [(8,3)] , [(0, 1)]
“字符串”拆分为 8:
0 0 1 , , , 1 0
RLE 拆分为 8
[(0,2), (1, 1)] , , , [(1, 1), (0, 1)]
注意:在我的示例中,我引用了“Z 上的 RLE 拆分”列表,但没有丰富它们。事实并非如此。我把它们排除在外以减少混乱。例如,“RLE split on 1”实际上应该被视为:
[(0, (0,2))] , [(0+2+1, (8,3))] , [(0+1+2+3+1, (0, 1)]
如何在 Z 上实现这种“RLE 拆分”(= 1, 8; 在这种情况下)
可以省略空数组(在 split 之后)。
也许是一个聪明的列表组合。?(使用嵌套了追加的 for 循环似乎更容易解决)