MATL , 20 bytes
TiodgvYsG8XQ!"@gto?P
Entrada é uma matriz de colunas, usando ;
como separador.
Experimente online!
Explicação
Considere como um exemplo a matriz de entrada [1;2;3;5;7;4;6;7;9]
. A primeira parte do código Tiodgv
,, converte essa matriz em [1;1;1;0;0;1;0;1;0]
, onde 1
indica uma alteração de paridade . (Especificamente, o código obtém a paridade de cada entrada da matriz de entrada, calcula diferenças consecutivas, converte valores diferentes de zero em 1
e precede a 1
.)
Então Ys
calcula a soma cumulativa , dando [1;2;3;3;3;4;4;5;5]
. Cada um desses números será usado como um rótulo , com base no qual os elementos da entrada serão agrupados . Isso é feito por G8XQ!
, que divide a matriz de entrada em uma matriz de células que contém os grupos. Neste caso, dá {[1] [2] [3;5;7] [4;6] [7;9]}
.
O restante do código itera ( "
) na matriz de células. Cada matriz numérica constituinte é pressionada com @g
. to
faz uma cópia e calcula sua paridade . Se ( ?
) o resultado for verdadeiro, ou seja, o conteúdo do array for ímpar, o array será invertido ( P
).
A pilha é exibida implicitamente no final. Cada matriz vertical numérica é exibida, fornecendo uma lista de números separados por novas linhas.