Bayangkan kita mendapatkan sepotong daerah pegunungan, ini akan menghasilkan bentuk yang mirip dengan ini:
4 _
3 _ _ __/ \
2 / \__/ \ _/ \_ /
1 / \ / \_/
0 \/
12322223210012233343221112
Seperti yang dapat kita lihat, kita dapat mewakili ini (sampai tingkat tertentu) dengan urutan bilangan bulat.
Untuk tujuan tantangan ini kami mendefinisikan lembah sebagai urutan yang berdekatan di mana nilai awalnya menurun dan dari beberapa titik mereka meningkat. Lebih formal untuk urutan lembah akan menjadi indeks yang dipegang oleh yang berikut:
- awal dan titik akhir lembah sama:
- lembah dimulai dan berakhir begitu wilayah menjadi lebih rendah:
- lembah tidak datar:
- lembah awalnya berkurang:
- lembah pada suatu titik akan meningkat:
Sekarang kita mendefinisikan lebar lembah seperti ukuran indeks , yaitu. .
Tantangan
Diberikan profil tinggi (urutan bilangan bulat non-negatif), tugas Anda adalah menentukan lebar lembah terluas.
Contoh
Mengingat profil tinggi [1,2,3,2,2,2,2,3,2,1,0,0,1,2,2,3,3,3,4,3,2,2,1,1,1,2]
, kami dapat memvisualisasikannya seperti sebelumnya:
4 _
3 _ _ __/ \
2 / \__/ \ _/ \_ /
1 / \ / \_/
0 \/
12322223210012233343221112
aaaaaa ccccc
bbbbbbbbb
Perhatikan bagaimana lembah kedua [3,2,1,0,0,1,2,2,3]
tidak meluas lebih jauh ke kanan karena titik paling kiri adalah dan bukan . Selain itu kami tidak menambahkan dua tersisa karena kami mengharuskan titik akhir lebih tinggi dari titik kedua-terakhir.
Karena itu, lebar lembah terluas adalah .
Aturan
- Input akan menjadi urutan bilangan bulat non-negatif (maaf orang Belanda)
- Anda dapat mengasumsikan bahwa selalu ada setidaknya satu lembah
- Output akan menjadi ukuran lembah terluas seperti yang didefinisikan di atas
Testcases
[4,0,4] -> 3
[1,0,1,0,1] -> 3
[1,0,2,0,1,2] -> 4
[13,13,13,2,2,1,0,1,14,2,13,14] -> 4
[1,2,3,2,2,2,2,3,2,1,0,0,1,2,2,3,3,3,4,3,2,2,1,1,1,2] -> 9
[3,2,0,1,0,0,1,3] -> 4
[3,2,0,1,0,0,1,3]
. Semua jawaban saat ini mengembalikan 8, menurut definisi Anda, saya percaya seharusnya 4.[3,1,2,3]
)[4,0,4]
akan menjadi kasus seperti itu.Jawaban:
Jelly , 15 byte
Cobalah online!
Atau lihat test-suite (menambahkan dua lagi test case yang sebelumnya gagal saya penuhi).
Bagaimana?
sumber
JavaScript (ES6),
1111089997 byteCobalah online!
Berkomentar
sumber
Python 2 ,
120115898786152149 byteCobalah online!
sumber
Retina 0.8.2 , 77 byte
Cobalah online! Tautan termasuk kasus uji. Penjelasan:
Konversikan ke unary.
Daftar, daripada menghitung, pertandingan yang tumpang tindih.
Mulai lembah ditangkap
\1
. Maka ini harus tidak cocok lagi sampai akhir. Karena kami tidak menangkap koma, ini juga mencegah pencocokan nilai yang lebih tinggi.Cocokkan dengan nilai yang menurun. The
(?!1+\2)
mencegah lulus apapun melalui loop dari menjadi lebih besar dari sebelumnya. (Pertama kali melalui\2
tidak diatur sehingga gagal untuk mencocokkan sepele.) Tangkapan termasuk koma tertinggal karena itu golfier.Cocokkan dengan nilai yang meningkat. Waktu ini
((?3)\3|\2)
berarti bahwa setiap pertandingan harus setidaknya selama nilai sebelumnya, atau tangkapan menurun terakhir kali pertama melalui loop.Akhirnya ujung lembah harus sama tingginya dengan awal.
Hapus ketinggian, tinggalkan koma. (Ini sedikit lebih mudah daripada menghitung ketinggian karena beberapa dari mereka mungkin nol.)
Sortir dalam urutan terbalik yaitu sebagian besar koma terlebih dahulu.
Hitung jumlah koma pada baris pertama, ditambah satu.
sumber
Sekam , 13 byte
Cobalah online!
Penjelasan
Saya menggunakan algoritma yang mirip dengan Jonathan Allan .
sumber
Japt , 31 byte
Cobalah online!
Menyimpan 10 byte dengan mengambil inspirasi dari jawaban Husk Zgarb. Saya masih berpikir ini bisa diperbaiki, tetapi saya belum menemukannya.
Penjelasan:
sumber