Melintasi urutan
Diberikan daftar bilangan bulat positif A
, sebut itu urutan yang meningkat jika setiap elemen lebih besar atau sama dengan yang sebelumnya; dan menyebutnya urutan menurun jika setiap elemen kurang dari atau sama dengan yang sebelumnya.
Beberapa peningkatan urutan:
[1,2,4,7]
[3,4,4,5]
[2,2,2]
[]
Beberapa urutan menurun:
[7,4,2,1]
[5,4,4,3]
[2,2,2]
[]
Sebuah urutan persimpangan adalah daftar yang dapat didekomposisi menjadi dua subsequences menguraikan, salah satu urutan meningkat dan yang lain urutan menurun.
Misalnya, daftar:
[3,5,2,4,1]
adalah urutan persimpangan, karena dapat diuraikan menjadi:
[3, 4 ]
[ 5,2, 1]
di mana [3,4]
kenaikan urutan dan [5,2,1]
penurunan urutan. Kami akan menyebut pasangan (meningkat, menurun) selanjutnya sebagai dekomposisi dari urutan persimpangan.
Daftar:
[4,5,2,1,3]
bukan urutan persimpangan; tidak ada cara untuk menguraikannya menjadi proses yang meningkat dan menurun.
Tugas Anda adalah menulis sebuah program / fungsi sebagai masukan daftar bilangan bulat positif; dan jika itu adalah urutan persimpangan, kembalikan kedua daftar dalam salah satu dekomposisi; atau nilai "falsey" yang konsisten jika daftar tersebut bukan urutan penyilangan.
Ini adalah kode-golf ; program / fungsi terpendek dalam setiap bahasa adalah pemenangnya.
Aturan:
- Input fleksibel.
- Celah yang biasa dilarang.
- Jika ada beberapa cara yang valid untuk mendekomposisi input, Anda dapat mengeluarkan satu atau semuanya.
- Pemformatan output untuk dekomposisi fleksibel; tetapi harus jelas tentang perbedaan antara dua berikutnya.
- Anda dapat menggunakan nilai output yang konsisten untuk menunjukkan bahwa input bukanlah urutan persimpangan; asalkan tidak ambigu dibandingkan dengan output untuk setiap urutan persimpangan. Anda harus menentukan nilai falsey dalam jawaban Anda.
Kasus uji:
Menggunakan False
untuk menunjukkan urutan non-persimpangan:
[3, 5, 2, 4, 1] => [3, 4], [5, 2, 1]
[3, 5, 2, 4, 4, 1, 1] => [3, 4, 4], [5, 2, 1, 1]
[7, 9, 8, 8, 6, 11] => [7, 8, 8, 11], [9, 6]
[7, 9, 8, 8, 6, 11] => [7, 9, 11], [8, 8, 6] # also valid
[7, 9, 8, 8, 6, 11] => [7, 8, 11], [9, 8, 6] # also valid
[7, 8, 9, 10, 20, 30] => [7, 8, 9, 20, 30], [10]
[7, 8, 9, 10, 20, 30] => [8, 9, 10, 20, 30], [7] # this is also valid
[5, 5, 5] => [5, 5, 5], []
[4, 5, 2, 1, 3] => False
[3, 4, 3, 4, 5, 2, 4] => False
sumber
[3, 5, 2, 4, 4, 1, 1]
. Kasing uji saat ini membiarkan Anda lolos dengan>=
/<
, padahal seharusnya>=
/<=
.Jawaban:
05AB1E ,
151413 byteCobalah secara online atau validasi semua kasus uji .
Penjelasan:
sumber
Jelly , 12 byte
Cobalah online!
sumber
JavaScript (ES6),
110 105104 byte[[decreasing], [increasing]]
Cobalah online!
Bagaimana?
some()
sumber
Haskell, 84 byte
Mengembalikan daftar semua
(decreasing,increasing)
pasangan yang valid atau daftar kosong jika tidak ada pasangan seperti itu.Cobalah online!
sumber
Python 3 ,
109107 byteCobalah online!
Fungsi ini mencetak semua kemungkinan dekomposisi ke output standar. Jika tidak ada dekomposisi yang mungkin, tidak ada yang dicetak.
Terima kasih kepada @Sriotchilism O'Zaic untuk saran perbaikan.
sumber
s<i[-1]
daripadai[-1]>s
dan mirip dengand[-1]<s
, keduanya menghemat satu byte.Brachylog , 17 byte
Cobalah online!
Mungkin ada ruang yang cukup untuk bermain golf ini.
sumber
Python 2 , 147 byte
Cobalah online!
sumber