Ada "algoritma pengurutan" kadang-kadang disebut pengurutan Stalin di mana untuk mengurutkan daftar Anda cukup menghapus elemen dari daftar sampai diurutkan dalam urutan yang meningkat. Misalnya daftar
[1, 2, 4, 5, 3, 6, 6]
Ketika "diurutkan" menggunakan Stalin menjadi
[1, 2, 4, 5, 6, 6]
Ketiganya dihapus karena rusak.
Sekarang jelas ada banyak cara untuk menghapus elemen untuk mengurutkan daftar. Misalnya setiap daftar dengan kurang dari dua elemen harus diurutkan jadi dengan hanya menghapus elemen secara membabi buta kita selalu dapat mengurutkan daftar. Karena ini masalahnya, kami hanya peduli dengan hasil terpanjang dari jenis Stalin.
Tugas Anda adalah mengambil daftar bilangan bulat positif dan menampilkan panjang daftar yang paling banyak diurutkan (bertambah) yang dapat dicapai dengan menghapus elemen dari daftar asli. Yaitu menemukan panjang dari sub-daftar yang paling lama diurutkan (mungkin tidak bersebelahan).
Daftar yang diurutkan dapat memiliki elemen yang sama lebih dari satu kali berturut-turut. Anda tidak perlu mendukung daftar kosong kecuali jika program Anda sendiri kosong.
Mencetak gol
Jawaban Anda akan dinilai berdasarkan panjangnya jenis Stalin terpanjang. Program akan ditafsirkan sebagai urutan byte daripada karakter, dan urutannya akan menjadi alami yang muncul dengan menafsirkan byte sebagai angka. Skor yang lebih rendah lebih baik.
Ini bukan kode-golf
Inilah alat yang rapi untuk membantu Anda menilai jawaban Anda.
Uji kasus
[1, 2, 4, 5, 3, 6, 6] -> 6
[19, 2] -> 1
[3, 3, 4, 3] -> 3
[10] -> 1
[1, 2, 4, 9] -> 4
[1, 90, 2, 3, 4, 5] -> 5
[1, 90, 91, 2, 3, 4, 5] -> 5
sumber
Jawaban:
Python 2 , panjang
1412109Output melalui kode keluar.
Cobalah online!
Bagaimana itu bekerja
Setiap saat, array melacak sub -array yang paling lama diurutkan yang ditemukan sejauh ini; adalah panjang terpanjang yang diakhiri dengan .L L[a−1] a
Awalnya, kami belum memproses elemen array, jadi seluruhnya terdiri dari nol.L
Ketika memproses elemen array , pertama kita mengambil maksimum , yang merupakan panjang dari subarray diurutkan terpanjang ditemui sejauh yang berakhir dengan atau bilangan bulat kecil. Menambahkan ke array seperti itu akan tetap diurutkan, sehingga subarray terpanjang yang berakhir adalah satu elemen lebih lama dari maksimum itu. Kami memperbarui dengan nilai yang dihitung.a [L[0],…,L[a−1]] a a a L[a−1]
Hasil akhir adalah maksimum .L
sumber
Bahasa Wolfram (Mathematica) , skor 9
Cobalah online!
sumber
Perl 6 , skor 9
Cobalah online!
sumber
Haskell , Skor
87, 48 byteCobalah online!
Sublist yang diurutkan terpanjang adalah
sumber
Jelly , panjangnya
42Cobalah online!
Bytes di halaman kode Jelly
Bagaimana itu bekerja
sumber
Pyth, skor
32 (7byte)Menyimpan poin berkat Anders Kaseorg.
Coba di sini
Penjelasan
sumber
leSI#y
skor 2.Stax , 4 macam panjang stalin maksimal
Jalankan dan debug itu
Ini berfungsi seperti ini.
sumber
R , Skor
1511,7262 byteCobalah online!
Ports Dennis 'Python menjawab R.
sumber
Brachylog , panjang 2 (4 byte)
Cobalah online!
Sebuah jawaban yang cukup ringkas karena tidak disortir lebih pendek.
(
08 03 80 6C
di halaman kode Brachylog)sumber
►LSnmOṖ
untuk Husk tetapi nilainya (setidaknya untuk panjangnya) terlalu buruk untuk memposting ...