Diberikan daftar bilangan bulat positif, tulis kode yang menemukan panjang sub-daftar bersebelahan terpanjang yang meningkat (tidak ketat). Itu adalah sublist terpanjang sehingga setiap elemen lebih besar atau sama dengan yang terakhir.
Misalnya jika inputnya adalah:
Sub-daftar yang paling lama bertambah adalah , jadi Anda akan menghasilkan .
Jawaban Anda akan dinilai dengan mengambil sumbernya sebagai daftar byte dan kemudian menemukan panjang sub-daftar terpanjang yang meningkat dari daftar itu. Skor yang lebih rendah adalah tujuannya. Ikatan rusak demi program dengan byte keseluruhan lebih sedikit.
code-challenge
source-layout
Ad Hoc Garf Hunter
sumber
sumber
True
menjadi pengganti1
tetapi mungkin demikian. Anda harus dapat menangani daftar kosong (Output tentu saja 0).[] => 0
,[0] => 1
,[3,2,1] => 1
,[1,2,1,2] => 2
Jawaban:
Pyth , skor 2 (8 byte)
Coba di sini!
Poin kode
[108, 101, 102, 83, 73, 84, 46, 58]
. Solusi lain yang lebih pendek,leSI#.:
skor 3, tetapi poin kode-nya adalah[108, 101, 83, 73, 35, 46, 58]
, yang sangat dekat dengan skor 1, sebenarnya.Mengatur ulang sedikit dapat membantuNevermind, substring bawaan adalah.:
yang tidak dapat diatur ulang, sehingga skor terendah harus 2 jika program memanfaatkannya.Bagaimana?
sumber
Haskell , skor 2,
6664616065 byteCobalah online! (memverifikasi sendiri).
Saya tidak pernah berpikir saya bisa mendapatkan skor 2 dengan Haskell, namun di sinilah saya!
Fungsi
g
menghitung panjang semua substring yang meningkat secara rekursif.foldr1 max.g
mengambil maksimum dari panjang tersebut (foldr1 max
setara denganmaximum
, tetapi dengan skor yang lebih rendah).sumber
1+a : b
tidak diperlukan, jadi ini adalah 62 byte.1
untuk daftar kosong, di mana ia harus kembali0
JavaScript (Node.js) ,
skor 3,skor 2,5346 byte5150 byte-7 byte terima kasih @Arnauld
+5+4 spasi sebagai ganti skor -1Cobalah online!
Mengasumsikan input tidak kosong. 61 byte jika daftar kosong harus ditangani. Skor 2 masih.
Cobalah online!
... atau 58 jika pengembalian
false
diperbolehkan. Skor 2 masih.sumber
Sekam , 5 byte , skor = 2
Cobalah online!
Tidak mungkin untuk mendapatkan skor lebih rendah dari 2 dengan Husk karena
ġ
1 memiliki codepoint yang sangat tinggi dan perlu ada sesuatu sebelum itu untuk mendapatkan maksimum dan panjangnya. Suatu usaha dapat dilakukan dengan mencoba menggunakan beberapa fungsi tetapi\n
akan ada sebelum fungsi pembantu yang memiliki titik kod sangat rendah sehingga apa pun setelah itu akan membuat urutan byte meningkat setidaknya panjang 2.1: Ini sepertinya cara terbaik untuk digunakan karena operator perbandingan harus mengikuti berbagai fungsi pemisahan seperti
↕
(span
).Penjelasan
sumber
Retina 0.8.2 , 40 byte, skor 3
Cobalah online! Tautan menyertakan dirinya sebagai kode byte sebagai input. Penjelasan:
Konversikan ke unary.
Berpisah pada pasangan yang menurun.
Hapus digit.
Urutkan koma dalam urutan terbalik. (Saya biasanya menulis ini
O^
tetapi tidak dapat melakukannya di sini karena alasan yang jelas.)Hitung jangka koma terpanjang, dan tambahkan satu untuk memasukkan angka terakhir.
sumber
Japt
-h
, 6 byte, skor 2Jangan berpikir skor 1 adalah mungkin. Harus bekerja dengan array string & karakter juga.
Cobalah - termasuk test case adalah kode dari solusi.
Penjelasan
sumber
MATL , skor 2, 13 byte
Input dapat berupa:
MATL menggunakan pengkodean ASCII. Codepoint dari kode di atas adalah
Cobalah online!
Penjelasan
sumber
Pascal (FPC) , skor 2
111 byte
Cobalah online!
Mengasumsikan input tidak kosong. Angka diambil dari input standar yang dipisahkan oleh spasi.
sumber
Jelly , 8 byte , skor 2
Mungkin ada solusi skor 1 entah bagaimana ...
Cobalah online!
Kode sumber sebagai daftar nilai byte:
Bagaimana?
sumber
Perl 6 , skor 2, 46 byte
Cobalah online!
Menangani daftar kosong. Kode aslinya adalah:
Jadi hanya 5 byte tambahan untuk mengurangi skor menjadi 2.
Sunting: Ah, saya tahu cara menghapus tugas , tapi kemudian saya tidak bisa mendapatkan skor di bawah 3 karena
)]]
...Penjelasan:
sumber
[[&(*+*)]]
bekerja seperti apa[+]
? Luar biasa ...Z
danX
. Cobalah online!{max 0,|.[[X..] ^$_ xx 2].map({+$_ if [<=] $_})}
05AB1E , skor 3 (9 byte )
Kemungkinan besar bisa menjadi skor 2 entah bagaimana.
Poin kode dari byte-program:
[140,1,90,100,80,125,233,9,103]
(dua sublist dengan panjang 3:[1,90,100]
dan[80,125,233]
)Cobalah online.
Penjelasan:
sumber
Java (JDK) , skor 3, 94 byte
Cobalah online!
Port saya (dengan saran dari Arnauld) jawaban JS.
etu
direturn
danhil
diwhile
membuatnya mustahil untuk golf untuk mencetak 2.for
tidak dapat digunakan di sini karena:;for
sedang naikfor
tidak dapat digunakan di awal badan lambda (batasan ruang lingkup). Dimungkinkan untuk membungkusnya dengan{}
tetapi tampaknya menggunakanwhile
byte menghemat.sumber
\u
di beberapa tempat, tetapi kemudian Anda harus00
diikuti oleh digit yang adalah 3 tetap ...Powershell, skor 3, 44 byte
Skrip uji:
Keluaran:
Penjelasan:
contiguous sub-list that is increasing (not strictly)
. Kemudian skrip memilah panjang dan mengambil yang terakhir (maksimum)(...|sort)[-1]
.Powershell 6, skor 3, 43 byte
Sama seperti di atas. Satu perbedaan:
sort -b 1
adalah pintasan untuksort -Bottom 1
dan berarti 1 elemen dari akhir array yang diurutkan . Jadi kita tidak perlu indeks[-1]
.sumber
Stax , skor 3 (15 byte)
Jalankan dan debug itu
sumber
Python 2 ,
skor 5,skor 87 byte2,1019392101 byteCobalah online!
Ups! Kupikir ini adalah golf kode pertama kali melalui ...
sumber
m=1,o=[1]
bagian tidak berakhir menghemat byte setelah kami mengurangi skorDyalog APL , skor 2, 20 byte
Cobalah online!
sumber
Bahasa Wolfram (Mathematica) , skor 3, 45 byte
Cobalah online!
SequenceCases
danOrderedQ
dengan sendirinya memberikan skor 3, sehingga skor tidak dapat ditingkatkan tanpa mengubah pendekatan secara signifikan.sumber
Max[Length/@SequenceCases[#,_?OrderedQ]]&
, tetapi_?Or
merupakan peningkatan selanjutnya dari panjang 4. (Seperti apa adanya_?AnyCamelCaseCommand
)Java (JDK), 126 byte, Skor 6
Golf
Tidak disatukan
Memasukkan
sumber
byte
menjadiint
, karenabyte
akan dibatasi untuk 8 bit?Kotlin, Skor 6, 119 byte
Coba Online
Penjelasan
sumber
Kotlin, Skor 4, 67 byte
Gagasan utama adalah: Transformasikan setiap bilangan bulat ke panjang sub-urutan yang berdekatan yang meningkat (tidak ketat). Pengembalian maksimum.
a.map{...}
- untuk setiap integer dalam array lakukanif(it<p){i=0}
- jika integer saat ini kurang dari integer sebelumnya, maka reset counterp=it
- Menyimpan integer saat ini di sebelumnya(++i)
- increment counter dan mengembalikan nilai ekspresi.max()
- dapatkan maksim panjang lebarsumber
Ruby , 64 byte
Cobalah online!
sumber
6
. Juga, kode Anda tidak menangani daftar kosong (di mana output seharusnya0
)