MATL , 20 байтов
TiodgvYsG8XQ!"@gto?P
Ввод - это массив столбцов, использующий в ;качестве разделителя.
Попробуйте онлайн!
объяснение
Рассмотрим в качестве примера входной массив [1;2;3;5;7;4;6;7;9]. Первая часть кода, Tiodgvпреобразует этот массив в [1;1;1;0;0;1;0;1;0], где 1указывает на изменение четности . (В частности, код получает четность каждой записи входного массива, вычисляет последовательные различия, преобразует ненулевые значения в 1и добавляет a 1.)
Затем Ysвычисляет накопленную сумму , отдавая [1;2;3;3;3;4;4;5;5]. Каждое из этих чисел будет использоваться как метка , на основе которой будут сгруппированы элементы ввода . Это делается путем G8XQ!, который разбивает входной массив на массив ячеек, содержащий группы. В этом случае это дает {[1] [2] [3;5;7] [4;6] [7;9]}.
Остальная часть кода iterate ( ") в массиве ячеек. Каждый составляющий числовой массив помещается в @g. toделает копию и вычисляет ее соотношение . Если ( ?) результат верен, то есть содержимое массива нечетно, массив переворачивается ( P).
Стек неявно отображается в конце. Каждый числовой вертикальный массив отображается, давая список чисел, разделенных новыми строками.