Pertimbangkan urutan angka satu dimensi dalam rentang tetap, yaitu
[1, 2, 4, 6, 8, 0, 2, 7, 3] in range [0, 10⟩
Grafik Yang Terus Meningkat * ** adalah garis yang menghubungkan semua titik dalam urutan ini dari kiri ke kanan, dan selalu naik atau tetap di atas level. Jika perlu, garis membungkus dari atas ke bawah dan terus naik dari sana untuk memenuhi titik berikutnya.
Tujuan dari tantangan ini adalah untuk membagi urutan dalam urutan yang berbeda yang semuanya tidak bertambah, sehingga ketika diplot bersama dengan sumbu vertikal terbatas mereka akan membentuk Grafik yang Terus Meningkat. Hal ini dilakukan dengan menambahkan titik ke ujung satu urutan dan ke awal urutan berikutnya, sehingga sudut garis yang melintasi batas atas sejajar dengan garis yang melintasi batas bawah, dan dua titik persimpangan memiliki koordinat horizontal yang sama. Contoh di atas akan memberikan output berikut:
[1, 2, 4, 6, 8, 10]
[-2, 0, 2, 7, 13]
[-3, 3]
Dan grafik yang sesuai akan terlihat sebagai berikut: Dan dengan sumbu yang diperluas untuk tampilan yang lebih baik: Output yang diperlukan adalah daftar dari bagian selanjutnya yang membentuk bagian-bagian dari Grafik yang Terus Meningkat. Membuat plot tidak diperlukan tetapi akan memberi Anda poin bonus;). Keluaran harus dengan jelas memisahkan urutan dengan beberapa cara.
Catatan
- Rentang akan selalu memiliki nol sebagai batas kiri (inklusif), dan batas kanan akan berupa bilangan bulat N.
- Urutan tidak akan pernah berisi nilai yang tidak berada dalam rentang.
- Urutan pertama tidak memiliki titik tambahan di awal.
- Urutan terakhir tidak memiliki titik tambahan di akhir.
- Tidak diperlukan untuk memberikan indeks awal yang akan diperlukan untuk merencanakan selanjutnya.
Uji kasus
Input: [0, 2, 4, 6, 1, 3, 5, 0], 7
Output: [0, 2, 4, 6, 8], [-1, 1, 3, 5, 7], [-2, 0]
Input: [1, 1, 2, 3, 5, 8, 3, 1], 10
Output: [1, 1, 2, 3, 5, 8, 13],[-2, 3, 11],[-7, 1]
Input: [5, 4, 3, 2, 1], 10
Output: [5, 14],[-5, 4, 13],[-6, 3, 12],[-7, 2, 11],[-8, 1]
Input: [0, 1, 4, 9, 16, 15, 0], 17
Output: [0, 1, 4, 9, 16, 32], [-1, 15, 17], [-2, 0]
Mencetak gol
Ini adalah kode-golf, kode terpendek dalam byte yang menang.
* Bukan jargon aktual ** Sebenarnya harus disebut Ever Non-Decreasing Graph, seperti yang ditunjukkan @ngm, tapi itu terdengar kurang mengesankan.
Jawaban:
Jelly , 20 byte
Cobalah online!
Selanjutnya dipecah oleh
0.5
.sumber
R ,
179158151 byteCobalah online!
Sunting: Kode sekarang berfungsi dan menerima input. (Terima kasih kepada Giuseppe, user202729 dan JayCe karena telah menunjukkan hal itu dengan tenang)
Edit: -21 byte yang disarankan oleh Giuseppe.
Edit: -7 byte dengan menghapus
d=NULL;
.sumber
s[p+1]-((m+s[p+1])-s[p])
menyederhanakans[p]-m
, dan Anda memilikid=c(c(...))
tempat hanyad=c(...)
diperlukan. Saya sangat curiga ada cara golf tapi ini masih jawaban yang bagus.d
bahkan perlu diinisialisasi?Python 2 , 60 byte
Input adalah N, diikuti oleh semua titik sebagai argumen individual. Selanjutnya dalam output dipisahkan oleh
0.5
.Cobalah online!
Python 2 ,
927768 byteSelanjutnya dipisahkan oleh
[...]
.Cobalah online!
sumber
Bersih ,
279269258 byteCobalah online!
sumber
JavaScript (Node.js) ,
10482 byteCobalah online! Port jawaban Python @ ovs.
sumber
Haskell,
828180 byteIni adalah port jawaban Bersih saya .
Cobalah online!
-1, -1 terima kasih kepada Laikoni
sumber
f
secara lokal tanpa tanda kurung di sekitar:
pola, seperti padalet x<r@(a:_):s|...
.Bersihkan , 92 byte
Cobalah online!
Argumen operator untuk
foldr
adalah lambda dengan penjaga; itu diurai sebagai:Saya mengirim ini ke Haskell .
sumber
Bersih ,
11010910410097 byteCobalah online!
-1 byte terima kasih kepada Keelan
sumber
Haskell , 82 byte
Cobalah online! Port jawaban Bersih saya .
Alternatif, juga 82 byte
Cobalah online!
sumber
JavaScript (Node.js) , 98 byte
Cobalah online! Ini sedikit lebih lama daripada jawaban JS lainnya, tetapi menggunakan pendekatan yang berbeda.
Penjelasan yang tidak disatukan dan disederhanakan
sumber
JavaScript (Node.js) , 48 byte, array dipisahkan oleh
,,
Cobalah online!
JavaScript (Node.js) , 50 byte, array dipisahkan oleh
|
Cobalah online!
sumber