considérer la « chaîne » (le traiter comme un tableau de chiffres)« splitting » la sortie d'un RLE (groupby) en fonction d'une valeur définie (le « caractère » pour diviser le RLE sur)
0 0 1 8 8 8 1 0
le RLE (« groupby ») est:
[(0,2), (1, 1), (8,3), (1, 1), (0, 1)]
Nous enrichissons alors la RLE ci-dessus avec la somme des longueurs d'exécution des éléments précédents.
Par conséquent, la version enrichie de ce qui précède devient:
[(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))]
La division "string" sur 1:
0 0 , 8 8 8 , 0
RLE divisée sur 1
[(0,2)] , [(8,3)] , [(0, 1)]
La « chaîne "split on 8:
Dans mes exemples, j'ai cité le "split RLE sur Z" listes sans les enrichir:RLE divisé sur 8
[(0,2), (1, 1)] , , , [(1, 1), (0, 1)]
Remarque. Ce ne serait pas le cas. Je les ai laissés dehors pour réduire l'encombrement. Par exemple, le "RLE fendu sur 1" devrait vraiment être traitée comme:
[(0, (0,2))] , [(0+2+1, (8,3))] , [(0+1+2+3+1, (0, 1)]
Comment puis-je obtenir ce "RLE split" sur Z (= 1, 8, dans ce cas)
C'est bien d'omettre les tableaux vides (après la division).
Peut-être une liste intelligente? (Il semble un peu plus facile à résoudre avec une boucle avec un append imbriqué dans)
Je suis confus. Est-ce qu'une expression comme '0 + 2 + 1' est censée être une chaîne ou voulez-vous simplement' 3'? – aaronasterling
Juste 3 - Je voulais décomposer les choses pour être lisibles. Désolé pour la confusion! – PoorLuzer
Supposons que RLE = [(0,2), (1,1), (8,3), (4,2), (1,1), (0,1)]; Si le résultat est [(0, (0,2))], [(0 + 2 + 1, (8,3), ** (4,2) **)], [(0 + 2 + 1 + 3 + 2 + 1, (0, 1)] ou [(0, (0,2))], [(0 + 2 + 1, (8,3)), ** (0 + 2 + 1 + 3 , (4,2)) **], [(0 + 2 + 1 + 3 + 2 + 1, (0, 1)] – Kabie