MATL , 20 bytes
TiodgvYsG8XQ!"@gto?P
La entrada es una matriz de columnas que se usa ;como separador.
Pruébalo en línea!
Explicación
Considere como ejemplo la matriz de entrada [1;2;3;5;7;4;6;7;9]. La primera parte del código, Tiodgvconvierte esta matriz en [1;1;1;0;0;1;0;1;0], donde 1indica un cambio de paridad . (Específicamente, el código obtiene la paridad de cada entrada de la matriz de entrada, calcula diferencias consecutivas, convierte valores distintos de cero 1y antepone un1 ).
Luego Yscalcula la suma acumulativa , dando [1;2;3;3;3;4;4;5;5]. Cada uno de estos números se usará como una etiqueta , en función de la cual se agruparán los elementos de la entrada . Esto se realiza mediante G8XQ!, que divide la matriz de entrada en una matriz de celdas que contiene los grupos. En este caso da {[1] [2] [3;5;7] [4;6] [7;9]}.
El resto del código itera ( ") en la matriz de celdas. Cada matriz numérica constituyente se empuja con @g. tohace una copia y calcula su paridad . Si ( ?) el resultado es verdadero, es decir, el contenido de la matriz es impar, la matriz se voltea ( P).
La pila se muestra implícitamente al final. Se muestra cada matriz vertical numérica, que proporciona una lista de números separados por nuevas líneas.