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,, Tiodgv
mengkonversi array ini menjadi [1;1;1;0;0;1;0;1;0]
, di mana 1
menunjukkan 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 Ys
menghitung 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
. to
membuat 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.