Input Anda adalah daftar / urutan / vektor / array 5-255 bilangan bulat positif, tidak harus unik. Anda dapat mengasumsikan format input apa pun yang paling cocok, dan bahwa setiap bilangan bulat (serta jumlah bilangan bulat) dipilih secara acak secara acak dari kisaran 5-255.
Tujuannya adalah untuk menampilkan daftar yang sama, dalam format yang sama (atau setara), tetapi diurutkan ke dalam urutan peningkatan (tidak menurun). Latihan awal yang umum dalam mempelajari bahasa. Pengajuan untuk mencakup:
Sebuah jawaban yang bekerja dengan benar dan mencapai tujuan; dan
Jawaban kedua yang berisi bug yang mengganggu. Antara 1% dan 10% dari waktu, output harus berupa daftar dalam format yang benar dan mengandung elemen yang benar, tetapi dalam urutan yang salah (urutan apa pun kecuali disortir dengan benar). Sisa waktu, program harus bekerja dengan benar dan mencapai tujuan.
Kedua jawaban harus memiliki Levenshtein jarak satu; yaitu, kita dapat memperoleh satu dari yang lain dengan menghapus satu byte, atau menambahkan satu byte, atau mengubah satu byte.
Mencetak seperti biasa dalam kode-golf (berdasarkan pada jawaban yang lebih pendek dari dua jawaban Anda), dengan celah-celah yang biasa dilarang.
Bonus 10% (turun menjadi skor) jika bug yang mengganggu adalah independen-input, yaitu menggunakan input yang sama lagi tidak mereproduksi bug (kecuali antara 1% dan 10% dari waktu).
sumber
[5,5,5]
tidak mungkin menghasilkan urutan yang salahJawaban:
Python 3 , 36 byte
Versi bebas bug, 37 byte
Cobalah online!
Versi yang menjengkelkan, 36 byte
Cobalah online!
Ini tergantung pada input dan karenanya tidak memenuhi syarat untuk bonus.
Ini memiliki probabilitas sekitar 2% untuk gagal. Gagal saat panjang input lebih rendah dari 10.
Dikombinasikan dengan jawaban LyricLy, ini menghasilkan 34 byte:
sumber
or1
akan ditafsirkan sebagai nama variabel dan memunculkan kesalahan sintaksis.05AB1E , 5 * 0,9 = 4,5 byte
Solusi kerja
Cobalah online!
Penjelasan
Solusi yang mengandung bug
Memberikan solusi yang salah 10% dari waktu (tidak bergantung pada input).
Cobalah online!
Penjelasan
Sama seperti solusi yang berfungsi, kecuali itu membalikkan daftar jika nomor yang diambil benar.
sumber
100F
dan catatan kaki},
yang membantu kami memvisualisasikan hasil fungsi yang dipanggil pada input beberapa kali. Ini menunjukkan kepada kita bahwa solusi yang bekerja selalu mengembalikan hasil yang benar, sementara yang disadap memiliki cacat keluaran.Jelly , 7 * (100% - 10%) = 6,3 byte
Cobalah online!
Versi kereta:
Cobalah online!
Di kedua tautan, ada test harness yang akan menjalankan kode 100 kali, setiap kali dengan daftar yang Anda berikan sebagai argumen, dan kemudian mengembalikan hasilnya.
Probabilitas setiap panjang input adalah:
Jadi untuk panjang 1 ada probabilitas 0%, untuk panjang 2 5%, untuk panjang 3 8,83̅%, untuk panjang 4 9,583̅% dll hingga panjang ∞ yang memiliki probabilitas 10%.
sumber
0.1 - 0.1/(length!)
.Ṣ⁵X’¤¡
danṢ⁵X¤¡
harus bekerja juga: versi kereta mengembalikan daftar yang tidak disortir <10% dari waktu, dan mengingat bahwa input dipilih secara acak acak, itu harus bekerja, simpan 2 byte.¹
untuk menyimpan 1 byte (jumlah aturan hitungan byte = yang lebih pendek); juga ada overline menggabungkan asing setelah yang kedua6
di6.6̅%
.¹
" karena kemudian tidak akan mengurutkan sama sekali 10% dari waktu.Python 3, skor
5857 - 10% = 51,3Menyimpan satu byte berkat ovs.
Versi bebas bug, 57 byte
Cobalah online!
Versi disadap, 57 byte
Cobalah online!
Saya memutuskan untuk mencoba solusi yang menggunakan bonus. Itu tidak mengalahkan jawaban Python lainnya, tapi saya senang memikirkannya.
sumber
C, 71 * 0,9 = 63,9 byte
Bebas serangga:
Cobalah online!
Buggy:
Cobalah online!
sumber
Groovy , 31 byte
Solusi yang disadap:
Solusi kerja:
Operator subskrip Groovy (
getAt
metode) mengembalikan null untuk daftar jika indeks lebih besar dari ukuran. Jadi jika ada elemen kesembilan ia akan tetap sama dengan daftar yang diurutkan, tetapi jika tidak (peluang 1,99203187%) itu akan terbalik. Namun akan selalu ada elemen pertama karena ukuran daftar selalu lebih besar dari atau sama dengan 5. Jadi 0 ina[0]
bisa ditukar dengan 1, 2, 3 atau 4.sumber
Bahasa Wolfram (Mathematica) , 29 byte
Ini adalah 26,1 byte dengan bonus, tetapi saya tidak sepenuhnya yakin saya mendapatkan bonus; pada input yang sudah diurutkan, kedua versi selalu menghasilkan output yang diurutkan.
Versi bebas bug (29 byte)
Cobalah online!
Versi yang mengganggu (30 byte)
Cobalah online!
sumber
PHP, 70 byte
Versi bebas bug, 70 byte
Cobalah online!
Versi disadap, 70 byte
Cobalah online!
Versi yang disadap mengurutkan dalam urutan terbalik 10% dari waktu (berdasarkan generator nomor acak).
sumber
-r
(-2 byte). bergabung dengan garis bawah; itu harus setara (-2 byte). gunakanasort
alih-alihsort
(-1 byte).unset($argv[0]);(rand(1,9)?sort:rsort)($argv);echo join(_,$argv);
(juga 65 byte)Python 2 , 26 byte
Buggy:
Cobalah online!
Keluaran dengan memodifikasi daftar input . Urutkan daftar hanya jika panjangnya setidaknya 10. Versi non-kereta menggantikan
9
dengan0
untuk selalu mengurutkan.Kerja:
Cobalah online!
Kita dapat memodifikasi fungsi untuk mengembalikan daftar dengan biaya 4 byte, untuk total 30 byte:
Cobalah online!
25 byte dengan beberapa aturan:
Cobalah online!
Keluaran fungsi literal yang baik mengurutkan atau identitas, menggunakan
id(0)
sebagai sumber acak. Ubah>
ke>=
untuk memperbaiki, atau0
ke~0
.sumber
Sekam , 6 byte
Versi kereta:
Cobalah online!
Versi yang benar:
Cobalah online!
Penjelasan
Program-program ini sepenuhnya deterministik. Faktanya, Husk saat ini tidak memiliki dukungan sama sekali untuk angka acak.
Saya mengklaim bahwa output dari program kereta tidak diurutkan dengan probabilitas antara 1% dan 2%. Diterangkan dengan N = 251 jumlah nilai elemen yang mungkin. Probabilitas bahwa daftar acak panjang L tidak mengandung kelipatan 9 adalah ((NK) / N) ^ L , di mana K adalah jumlah nilai yang dapat dibagi dengan 9 (dalam kasus kami K = 28 ). Probabilitas total adalah rata-rata untuk 5 ≤ L ≤ 255 , yaitu sekitar 1,98%. Beberapa dari daftar ini adalah positif palsu, karena sudah disortir. Probabilitas daftar acak panjang L yang akan diurutkan paling banyak ((N + N * (N-1) / 2) / N ^ 2) ^ ⌊L / 2⌋ : jika kita memecah daftar menjadi potongan-potongan panjang 2, masing-masingPotongan ⌊L / 2⌋ harus disortir. Probabilitas total daftar yang diurutkan dibatasi oleh rata-rata di atas untuk 5 ≤ L ≤ 255 , yaitu sekitar 0,30%. Dengan demikian probabilitas fungsi mengembalikan daftar yang tidak disortir adalah antara 1,67% dan 1,98%.
sumber
↓9
alih-alihV¦9
, dan mempersingkatnya hanya9
untuk versi yang benar? Ini akan membuatnya selalu gagal pada input pendek dan selalu bekerja dengan benar pada input yang lebih panjang, tetapi karena panjang input mengikuti distribusi acak, itu masih harus menjadi jawaban yang validBash , 26 byte
Versi yang benar
Cobalah online! atau periksa probabilitasnya .
Versi disadap
Cobalah online! atau periksa probabilitasnya .
Mengambil input sebagai angka yang dipisahkan oleh baris baru. Menggunakan variabel bawaan
RANDOM
, yang selalu mengembalikan nomor acak (semu) di kisaran 0 - 32767 . Menggunakan%20
hasil dalam tingkat kegagalan sekitar 5% (terima kasih @Titus untuk mengklarifikasi masalah dengan%10
).Keacakan ini berarti tingkat kegagalan tidak tergantung pada input, tetapi ini mengharuskan array input mencakup setidaknya satu angka dengan lebih dari satu digit, karena output kegagalan diurutkan secara leksikografis.
Versi alternatif, 27 byte
Versi bugged menggantikan
+
dengan a%
. Cobalah online atau coba disadap .sumber
%10
memiliki peluang lebih tinggi untuk kembali0
ke7
daripada8
atau9
, sehingga kemungkinan gagal di atas 10%;)%20
seperti jawaban Anda.Pyth , skor 8 * 0,9 = 7.2
Cuplikan pertama (yang benar):
Coba di sini!
Cuplikan kedua (disadap):
Coba di sini!
Disimpan dua byte (dan skor 1,8) berkat isaacg !
sumber
.S
mengembalikan input tidak berubah berarti bahwa dalam kasus (jarang) itu, peluang kami untuk mendapatkan jawaban yang salah turun dari 10% menjadi 0% - jadi rata-rata, masih dalam kisaran yang tepat. Tentu saja, 10 salinan juga baik-baik saja..S
mungkin juga mengembalikan input itu sendiri (yang tidak akan menjadi masalah), tapi maksud saya.S
mungkin juga mengembalikan daftar yang diurutkan .O.uSNT.S
JavaScript (ES6), 24 byte
Versi bebas bug (setidaknya untuk bilangan bulat dalam kisaran 0-2147483647, jadi apa pun dalam kisaran yang diberikan):
Versi kereta:
Bergantung pada a) algoritma pengurutan mesin dan b) daftar input yang berisi dua nilai dalam urutan yang salah yang berbeda dengan 1. (Jika probabilitas itu ternyata terlalu rendah maka
1
dapat ditingkatkan, tetapi pada saat Anda mendapatkan untuk8
itu tidak akan mengurutkan apa pun dalam kisaran5-255
.)sumber
PHP, 62 byte
terinspirasi oleh solusi Jo (dan saya baru memperhatikan: ini pelabuhan Justin Mariner ):
bekerja (macam naik):
buggy (kesempatan sekitar 5% untuk menurun):
Jalankan dengan
-nr
sumber
Pushy , 9 byte - 10% = 8.1
Solusi yang Disadap:
Cobalah online!
Solusi kerja:
Cobalah online!
Kode yang disadap melakukan hal berikut:
Kode tetap hanya berubah
0
menjadi1
. Sepertirandom(1, 10)
tidak akan pernah terjadi0
, pernyataan if tidak akan pernah dieksekusi.sumber
MATL ,
7 * 0,9 = 6,36 * 0,9 = 5,4 byteVersi kereta:
Cobalah online!
Penjelasan:
Versi bebas bug:
Cobalah online!
Penjelasan:
sumber
Jq 1,5 , 42 byte
Buggy
Bekerja (hapus =)
Asumsikan panjang garis seragam dalam kisaran [5.255] sekitar 7% akan memicu bug
Cobalah online!
sumber
J, 22,5 byte (25 byte - 10%)
dengan bug:
tanpa bug:
Cobalah online!
sumber
R , 30 * .9 = 27 byte
(kereta)
Cobalah online!
(tidak buggy)
Versi kereta jenis
decreasing=T
10% dari waktu, pengambilan sampel dari distribusi seragam (0,1). Versi un-buggy selaludecreasing=F
sumber
Rosda , 42 byte - 10% = 37,8
Bebas serangga:
Buggy:
Cobalah online!
Ini menggunakan
currentTime
fungsi untuk membuat angka acak. Tampaknya distribusi mereka sedikit berbeda antar mesin. Rasio20//19
dapat disesuaikan untuk mendapatkan hasil yang berbeda tanpa penalti byte (kecuali lebih kecil dari99//98
).sumber
Oktaf , 36 * 0,9 = 32,4 byte
Versi kereta:
Cobalah online!
Versi bebas bug:
Cobalah online!
Ini memilah vektor, lalu menggeser semua angka satu ke kanan jika angka acak kurang dari 0,1.
sumber
Java 8,
4534,2 (5038 - 10%) byteVersi normal:
Penjelasan:
Coba di sini.
Versi disadap (
5139 byte):LD dari 1:
1
ditambahkan.Penjelasan:
Coba di sini.
sumber
JavaScript, 25 * 0.9 = 22.5
input x
sumber