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, Tiodgv
convierte esta matriz en [1;1;1;0;0;1;0;1;0]
, donde 1
indica 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 1
y antepone un1
).
Luego Ys
calcula 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
. to
hace 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.