「文字列」を検討してください(数字の配列として扱います)
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
1 の RLE 分割
[(0,2)] , [(8,3)] , [(0, 1)]
8 で分割された「文字列」:
0 0 1 , , , 1 0
8 で RLE 分割
[(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 (= 1、8;この場合)でこの「RLE分割」を達成するにはどうすればよいですか
空の配列を省略しても問題ありません ( split の後)。
おそらく賢いリスト構成?( 内にネストされた追加の for ループで解決する方が少し簡単に思えます)