MATL , 20 byte
TiodgvYsG8XQ!"@gto?P
Input adalah array kolom, menggunakan ;sebagai pemisah.
Cobalah online!
Penjelasan
Pertimbangkan sebagai contoh array input [1;2;3;5;7;4;6;7;9]. Bagian pertama dari kode,, Tiodgvmengkonversi array ini menjadi [1;1;1;0;0;1;0;1;0], di mana 1menunjukkan perubahan paritas . (Secara khusus, kode memperoleh paritas dari setiap entri array input, menghitung perbedaan berurutan, mengonversi nilai bukan nol menjadi 1, dan menambahkan sebuah 1.)
Kemudian Ysmenghitung jumlah kumulatif , memberi [1;2;3;3;3;4;4;5;5]. Masing-masing angka ini akan digunakan sebagai label , berdasarkan elemen-elemen input yang akan dikelompokkan . Ini dilakukan oleh G8XQ!, yang membagi array input menjadi array sel yang berisi grup. Dalam hal ini memberi {[1] [2] [3;5;7] [4;6] [7;9]}.
Sisa kode iterates ( ") pada array sel. Setiap array numerik konstituen didorong dengan @g. tomembuat salinan dan menghitung paritasnya . Jika ( ?) hasilnya benar, yaitu isi array aneh, array dibalik ( P).
Tumpukan secara implisit ditampilkan di akhir. Setiap larik vertikal numerik ditampilkan, memberikan daftar angka yang dipisahkan oleh baris baru.