Tantangan ini sudah menjelaskan tentang portsort. Namun, saya agak malas dan saya benar-benar hanya perlu array saya untuk sedikit lebih banyak diurutkan daripada sebelumnya, tidak perlu diurutkan sepanjang jalan .
Di Drop Sort, kami menjatuhkan setiap elemen kurang dari elemen apa pun sebelumnya. Di Lazzy Drop Sort, kami menjatuhkan setiap elemen kurang dari yang sebelumnya .
Ini sebuah contoh. Pertimbangkan array berikut:
8 6 9 9 7 2 3 8 1 3
Mari kita tandai setiap elemen kurang dari yang sebelumnya.
8 6 9 9 7 2 3 8 1 3
^ ^ ^ ^
Perhatikan bagaimana tidak 3
ada yang ditandai, maupun yang terakhir 8
. Mereka semua lebih besar dari elemen tunggal di sebelah kiri mereka.
Melengkapi algoritme, menghapus elemen yang ditandai, kita dapatkan:
8 9 9 3 8 3
Itu pada dasarnya terlihat lebih diurutkan. Agak. Aku malas.
Tugas Anda, seperti yang mungkin telah Anda simpulkan, adalah menerapkan algoritma ini.
Input adalah array setidaknya 1 bilangan bulat positif antara 1 dan 9, sehingga Anda dapat mengambil serangkaian angka juga.
Ini adalah kode-golf , byte terkecil menang!
Kasus uji tambahan:
1
1
1 2 3
1 2 3
5 3 1
5
1 2 3 2 1
1 2 3
1 1 1 9 9 9 1 1 1 9 9 9 1 1 1
1 1 1 9 9 9 1 1 9 9 9 1 1
9 9
9 9
5 2 4 2 3
5 4 3
Jawaban:
Sekam , 4 byte
Cobalah online!
Penjelasan
sumber
JavaScript (ES6),
2825 byteDisimpan 3 byte berkat @Shaggy
Cobalah online!
sumber
n=>p<=n
akan tampak luar biasa ;-)(n=p)=>p<=(p=n)
berfungsi dengan baik;)p
untuk pertama kalinya, ketika belum didefinisikan?a
awalnya diatur ke array input dana-1
akan menghasilkanNaN
(kecuali jika berisi bilangan bulat tunggal, dalam hal ini dipaksa ke bilangan bulat ini).R , 27 byte
Cobalah online!
sumber
MATL ,
98 byteDisimpan satu byte berkat Giuseppe.
Cobalah online!
Penjelasan:
sumber
Perl 5 .10.0 +
-nl
, 16 byteCobalah online!
sumber
perl6 -ne '$/>$_||.say;$/=$_'
Haskell, 29 byte
hanya pemahaman daftar sederhana.
sumber
Japt ,
87 byteDisimpan 1 byte berkat @Oliver
Uji secara online!
Alternatif:
sumber
Stax , 5 byte
Jalankan dan debug ini secara online
Membongkar, tidak menarik, dan mengomentari kodenya, kita dapat ini.
Jalankan yang ini
Urutan instruksi canggung tetapi ada alasan untuk itu. Pengemasan kode sumber stax tidak selalu menghasilkan output ukuran yang sama untuk input ukuran yang sama. Pada dasarnya, Anda memiliki kesempatan untuk menyimpan byte jika karakter sumber terakhir memiliki kode karakter yang lebih rendah. Nah,
!
memiliki salah satu kode terendah yang bisa Anda dapatkan untuk karakter yang dapat dicetak. (33 khusus) Banyak program 6ax ASCII stax tidak dapat mengemas lebih kecil. Tetapi jika mereka diakhiri dengan a!
, maka mereka bisa. Jadi alasan untuk pemesanan instruksi khusus ini adalah untuk memastikan bahwa logika tidak berakhir pada akhir program.sumber
J, 12 Bytes
Penjelasan:
Contoh:
Cobalah online!
sumber
Jelly , 6 byte
I / O menggunakan string.
Cobalah online!
sumber
×
seharusnya tidak bekerja untuk pengulangan karakter, tetapi itu berhasil.Java 8,
665548 byte-11 byte setelah tip dari @ OlivierGrégoire .
-7 byte lagi berkat @ OlivierGrégoire .
Penjelasan:
Cobalah online.
sumber
~0
ketika itu pada dasarnya-1
. Secara pribadi saya akan memilih solusi yang lebih intuitif jika byte-count memiliki panjang yang sama (kecuali untukwhile(...)
vsfor(;...;)
, dalam hal ini saya lebih sukafor
. Terima kasih untuk -7 byte, meskipun. :)Integer.MIN_VALUE
(yang kemudian1<<31
, saya kira ...) ;-)Oktaf , 21 byte
Cobalah online!
Penjelasan:
Ambil vektor
x
sebagai input, dan buat vektor[0, diff(x)<0]
, di manadiff(x)
vektor dengan perbedaan antara semua elemen yang berdekatan. Pertahankan hanya yang negatif dengan membandingkannya dengan nol, memberi kami daftar semua elemen yang ingin Anda jatuhkan.Kami kemudian memilih elemen dari vektor input yang ingin kami pertahankan.
sumber
V , 25 byte
Cobalah online!
Hexdump:
Bahasa terburuk untuk pekerjaan itu. Tapi saya melakukannya dengan berani .
sumber
k$yl+@"òç-/d
Spanyol?k$yl+@"òç-/d
mungkin diterjemahkan secara bebas sebagai Aduh, siapa yang membiarkan pintu lemari itu terbuka?Triangularity , 71 byte
Cobalah online!
Bagaimana itu bekerja?
sumber
)IEL)rFD)2+)IE)w+h)2_stDO={M)IEm}
yang mana yang akan berkembang menjadi jawaban Anda saat ini?)IEL)rFD)2+)IE)w+h)2_stDO={M)IEm}
akan menjadi kode Anda, itu akan diperluas ke template Anda saat ini, dan kemudian lakukan perintah 2D pada template yang diperluas. EDIT:.....).....\n....IEL....\n...)rFD)...\n..2+)IE)w..\n.+h)2_stDO.\n={M)IEm}...
dan.....).........IEL.......)rFD).....2+)IE)w...+h)2_stDO.={M)IEm}...
dan)IEL)rFD)2+)IE)w+h)2_stDO={M)IEm}
akan ketiganya menjadi program yang sama persis.Python , 40 byte
Cobalah online!
Input sebagai tuple karakter.
Python 3 , 41 byte
Cobalah online!
Input string.
Python 2 , 41 byte
Cobalah online!
Input string, hanya karena string lebih besar dari
id
tetapi jumlahnya lebih kecil.sumber
Bahasa Wolfram (Mathematica) , 33 byte
Cobalah online!
Bagaimana itu bekerja
Kode
# - {0}~Join~Most@#
mengubah sebuah array{a,b,c,d,e,f}
menjadi{a,b-a,c-b,d-c,e-d,f-e}
. MenerapkanArg
ini menetapkan angka negatif kePi
dan nomor non negatif ke0
.Pick[#, ..., 0]&
picks keluar entri dari#
mana...
memiliki0
: dalam kasus kami, persis unsur-unsur yang menghasilkan sejumlah nonnegatif ketika Anda kurangi elemen sebelumnya. Dengan kata lain, ini adalah entri yang ingin kita simpan ketika lazydropsorting.sumber
Bertanya-tanya , 27 byte
Contoh penggunaan:
Penjelasan
Versi tidak disatukan:
Prepend
0
, dapatkan daftar pasangan berurutan, simpan item daftar tempat angka pertama <= angka kedua, dapatkan angka kedua dari setiap pasangan.sumber
Bahasa Wolfram (Mathematica) , 20 byte
Cobalah online!
Penjelasan
Input = {8, 6, 9, 9, 7, 2, 3, 8, 1, 3}
Kelompokkan elemen berurutan yang benar-benar menurun:
{{8, 6}, {9}, {9, 7, 2}, {3}, {8, 1}, {3}}
Ambil elemen pertama dari masing-masing:
{8, 9, 9, 3, 8, 3}
sumber
##>0
mewah dan segalanya, tetapi tidak benar-benar menyimpan apa pun di#>#2
sini;) (yang akan membuat program Anda bekerja dengan bilangan bulat sewenang-wenang, bukan berarti itu diperlukan).Python 2 ,
52464542 byteCobalah online!
Disimpan:
sumber
SWI-Prolog, 44 byte
Penggunaan: Panggil " Daftar -X" di mana Daftar adalah daftar yang tertutup tanda kurung, misalnya koma [1,4,5,1,11,6,7].
sumber
APL + WIN, 14 byte
Meminta input layar dari vektor bilangan bulat.
sumber
05AB1E , 6 byte
Cobalah online!
Penjelasan
sumber
Kotlin , 39 byte
Cobalah online!
Saring item yang merupakan item pertama (indeks == 0, atau bahkan indeks yang lebih pendek <1) ATAU Nilai saat ini lebih besar atau sama dengan item sebelumnya (a [i-1]).
sumber
APL (Dyalog Unicode) , 11 byte
Cobalah online!
Ini sebenarnya sangat mirip dengan jawaban Graham, tetapi dalam Dyalog, dan dikembangkan secara independen. Juga, lebih simetris.
sumber
K4 , 10 byte
Larutan:
Contoh:
Penjelasan:
Temukan indeks di mana elemen kurang dari sebelumnya, hapus indeks ini dari input
sumber
Attache , 24 byte
Cobalah online!
Penjelasan
Mask
memilih semua elemen dari argumen kedua yang sesuai dengan elemen kebenaran dalam argumen pertamanya.1'(Delta!_>=0)
menghitung indeks yang sesuai dengan elemen-elemen yang seharusnya berada dalam susunan akhir.Upaya lain
28 byte (pointfree):
~Mask#(1&`'##Delta#`>=#C[0])
32 byte:
{Mask[1'(&`<= =>Slices[_,2]),_]}
sumber
C # (.NET Core) , 33 + 18 = 51bytes
Cobalah online!
pada dasarnya pernyataan adalah di mana x adalah int pertama dalam array, atau lebih besar dari atau sama dengan angka sebelumnya, simpanlah. Jatuhkan itu.
sumber
IEnumerable
. TidakToArray()
dibutuhkanSystem.Collections
, dan itu akan meniadakan semua byte yang disimpan untuk menghapusToArray()
.IEnumerable
pada jawaban, gunakan saja sebagai tipe pengembalian.Swift 4 ,
5655 byteCobalah online!
Penjelasan
sumber
Jelly , 9 byte
Cobalah online!
Ini terasa sangat besar, tidak akan terkejut jika ada cara yang lebih baik.
sumber
Brain-Flak ,
136, 120 byteIni diformat dan "dibaca" .
Cobalah online!
sumber