Saya harus berhenti memikirkan nama-nama lemah
Tugas Anda adalah membuat sebanyak mungkin cuplikan (program yang memiliki built-in input dan output), fungsi atau program penuh sebanyak mungkin yang mengurutkan apa pun versi bilangan bulat array bahasa Anda dalam urutan menaik, tetapi untuk setiap program, Anda hanya diizinkan untuk menggunakan karakter dalam ASCII (atau halaman kode bahasa Anda, jika itu secara langsung ditentukan bukan ASCII) yang belum pernah digunakan dalam program sebelumnya.
Ini adalah contoh jawaban (program terpisah dipisahkan oleh baris baru):
Derp
ASdFGHJKLAAA
qwEEERtyRty
Dalam hal ini (bahasa fiksi), jawaban pertama saya adalah Derp
, yang habis D
, e
, r
dan p
. Pada program kedua, saya tidak diperbolehkan menggunakan karakter itu lagi, tetapi saya dapat menggunakan kembali sebanyak mungkin karakter yang saya inginkan. Sama dengan program ketiga, dan seterusnya.
Setiap program harus mengambil array bilangan bulat, jadi sesuatu seperti ini (lihat contoh input / output untuk gaya input / output yang valid):
[3 4 -2 5 7 196 -44 -2]
Dan itu harus menampilkan item dalam array sebagai array, dalam urutan naik:
[-44 -2 -2 3 4 5 7 196]
Skor Anda akan menjadi jumlah total pengiriman. Jika ada seri, bytecount terendah (jumlah byte terkecil dalam kode Anda) menang!
Aturan untuk program:
- Semua kiriman harus berjalan dengan benar dalam satu versi bahasa (jadi
Python 2 != Python 3
). - Kiriman Anda dapat berupa cuplikan, fungsi, atau program lengkap. Anda bahkan diizinkan untuk mencampur dan mencocokkannya - namun, Anda harus mengatakan yang mana, dan memberikan tautan ke kiriman yang berfungsi.
- Harap berikan tautan online ke semua solusi, jika memungkinkan.
- Semua kiriman harus menggunakan larik (atau string yang dibatasi dengan karakter apa pun) sebagai input, dan menghasilkan larik yang diurutkan (dalam bentuk larik bahasa Anda atau sebagai
{any character}
string yang -dimodifikasi). - Anda tidak diperbolehkan menggunakan karakter apa pun di luar ASCII (atau halaman kode bahasa Anda).
Sebagai contoh, ini adalah input / output yang valid:
[1 2 3 4] (Clojure style arrays)
[1, 2, 3, 4] (Python style arrays)
1 2 3 4 5 (Space-delimited - separated by spaces)
1#2#3#4#5 ("#"-delimited - separated by "#" characters)
1\n2\n3\n4\n (newline-delimited)
Spesifikasi untuk input:
- Anda dijamin bahwa array hanya berisi bilangan bulat. Namun, mungkin ada angka negatif, dan angka dapat berulang tanpa batas.
sumber
Jawaban:
Jelly , 10 program, 65 byte
Ada beberapa tumpang tindih yang tak terhindarkan dengan jawaban @ Lynn's Jelly . Kredit untuk ide bogosort pergi padanya.
Cobalah online! atau memverifikasi keunikan .
Bagaimana mereka bekerja
sumber
Jelly, 8 program
Program terakhir sangat menyebalkan ...
Jika saya dapat menghapus
œṡ
dari<;0œṡ0⁸ṁjµ/
, ada juga satu aneh ini:²SNr²ZFœ&
. Bantuan dihargai.sumber
Roots → polynomial, polynomial → roots
jenius!U
gratis05AB1E , skor = 6
05AB1E menggunakan pengkodean CP-1252 .
Terima kasih kepada Kevin Cruijssen untuk program 4.
Terima kasih kepada Riley untuk inspirasi untuk program 6.
Program 1
Cobalah online!
Program 2
Cobalah online!
Program 3
Cobalah online!
Program 4
Cobalah online!
Program 5
Cobalah online!
Program 6
Cobalah online!
sumber
ϧ
Dapat digunakan untuk skor tambahan. Coba di sini.œ
solusi, tetapi saya bahkan tidak tahu tentangß
:)€Ý逤
akan bekerja jika¤
muncul nilai alih-alih jika hanya mendapatkannya.Brachylog , skor =
45Program 1 - Sortir acak
Kami mengocok dan memastikan bahwa kebalikan dari daftar tidak bertambah. Jika tidak kita coba lagi secara rekursif.
Program 2 - Jenis permutasi
Output permutasi pertama yang tidak menurun.
Program 3 - Built-in
Memesan.
Program 4 - Built-in
Pesan dengan label. Karena bilangan bulat dalam daftar sudah diperbaiki, ini melakukan hal yang sama seperti
o
.Program 5 - Pencetakan min
Berikut penjelasan untuk keburukan Alam ini:
sumber
RecursionError: maximum call stack size exceeded
JavaScript, skor
12Menggandakan skor berkat @ETHproductions yang mengingatkan saya pada string yang lolos
Cuplikan 1 (21 byte, karakter
\ ,-.=>289`Facehilnorstux
)Cuplikan 2 (9117 byte, karakter
(+)[!]
)Anda dapat menguji kedua versi di konsol browser Anda. Versi pertama hanya fungsi, versi kedua adalah potongan yang membutuhkan tanda kurung dan argumen ditambahkan.
Contohnya
Bagaimana?
Cuplikan pertama memanggil metode pengurutan pada array yang Anda lewati. Secara default, metode sortir jenis lexicographical, yang buruk untuk bilangan bulat (terutama angka negatif multi-digit). Karena itu, kita harus meneruskannya dengan panggilan balik dalam bentuk fungsi panah yang mengambil dua elemen dan mengurangi yang terakhir dari yang sebelumnya. Bergantung pada nilai yang dihasilkan, kedua elemen disusun ulang: jika lebih kecil dari 0,
a
akan muncul sebelumnyab
, jika lebih besar dari 0,a
akan muncul setelahb
, dan jika 0, kedua elemen akan berakhir bersebelahan.Cuplikan kedua tidak lebih dari versi yang dikodekan dari cuplikan pertama dan mengambil keuntungan dari fakta bahwa dalam JavaScript,
object.function()
sama denganobject["function"]()
. Ini juga menggunakan array kosong,!
operator dan casting nomor untuk menghasilkan semua jenis string, di mana karakter yang diperlukan untuk nama fungsi dapat ditemukan. Kemudian tanda kurung digunakan sekali lagi untuk mendapatkan karakter pada indeks tertentu dalam string, dan semua karakter tersebut digabungkan, menghasilkan kode JavaScript berikut:[]["fill"]
sama dengan[].fill
, yang["constructor"]
merupakanFunction
objek. Kami kemudian memanggilnya dengan string (yang harus dievaluasi ketika fungsi dipanggil), yang merupakan fungsi pertama, tetapi perhatikan bahwa argumen telah diganti olehthis
. Untuk mengatur nilaithis
argumen, kita perlu memanggil fungsi pada fungsi ini, yaitu["call"]
. Dalam JavaScript konvensional, Anda akan menulis ini sebagai:sumber
Function`return a=>a.sort\x28\x28a,b\x29=>a-b\x29`
misalnya, tetapi tanpa menggunakan karakter yang telah Anda gunakan'
dan melakukan misal,'('
bukannya apa pun yang dihasilkan JSF sebagai char. (juga, gunakanf
dant
sebagai vars bukana
danb
,b
secara harfiah biaya sekitar 3000 karakter)V , skor
3, 4Ini adalah tantangan yang sangat menyenangkan! Untungnya, vim memiliki fungsi "sort" bawaan, jika tidak ini pada dasarnya tidak mungkin. Sayangnya, karena V / vim berbasis string maka perlu argumen untuk mengurutkan berdasarkan nilai numerik. Jadi saya menelepon
Urutkan berdasarkan nilai numerik
n
,Urutkan berdasarkan nilai heksadesimal
x
, danUrutkan berdasarkan nilai floating point
f
Catatan kecil: Ketika saya menulis sesuatu seperti
<esc>
atau<C-r>
, ini sebenarnya adalah byte tunggal. Ini mewakili karakter yang tidak diinginkan, dan karena V sayangnya sangat bergantung pada karakter yang tidak dicetak, metode ini membuat semuanya lebih mudah. TIO link memiliki-v
bendera, yang membuat penerjemah V membaca ini seolah-olah mereka adalah karakter yang mereka wakili.Program 1, 2 byte
Cobalah online!
Ini memanggil fungsi sortir khusus V.
Program 2, 10 byte
Ini hanya memanggil 'sortir' secara langsung. Satu-satunya hal yang menarik tentang ini adalah kita melakukannya dari
ex
mode, yang merupakan mode aneh yang mengemulasi editor teks 'ex', kakek buyut buyut V.vi
adalah jalan pintas untukvisual
, perintah yang digunakan untuk meninggalkan mode ex. Ini membutuhkan baris baru tambahan.Cobalah online!
Program 3, 14 byte
Cobalah online!
Baiklah, disinilah penjelasannya mulai sedikit aneh. Jika kita dapat membangun teks
sor x
, kita dapat menghapusnya dan memasukkannya ke dalam perintah saat ini dengan<C-r><register-name>
. Jadi kita akan memasukkannya huruf besar.Program 4, 19 byte
Cobalah online!
Dan di sinilah penjelasannya menjadi sangat aneh. Mirip dengan terakhir kali, kami akan membangun perintah dalam mode normal sehingga kami dapat menggunakan kunci yang berbeda.
sumber
CJam, skor 4
Program 1: Built-in
Program 2: Built-in Eval'ed
36 adalah nilai ASCII dari
$
.Program 3: Urutan Permutasi
Program 4: Nilai Min
Penjelasan tentang keburukan yang tidak wajar ini:
sumber
(+
daripada1m<
jika Anda mau.<
potongan itu sehingga mungkin lebih baik untuk tetap menggunakan1m<
Japt , skor = 4
Program 1
Cobalah online!
Program 2
Cobalah online!
Program 3
Cobalah online!
Program 4
Cobalah online!
sumber
s)$.sort(...
, tidak yakin apakah itu berguna.O
dan$
telah digunakan. Saya terbuka untuk saran jika Anda bisa memikirkan cara penyortiran lainnya! :)Oktaf, 2 poin
Sulit untuk bersaing dengan esolang, tetapi begini:
Saya terkesan jika seseorang mengalahkan ini.
unique
dapat digunakan untuk mengurutkan nilai, tetapi akan menghapus duplikat. Untuk memasukkan duplikat Anda perlu tanda kurung, dan mereka banyak digunakan dalam semacam gelembung. Anda juga perlu@
, yang digunakan juga.Nomor 1:
Yang ini cukup sederhana: Buat fungsi anonim, ditugaskan ke variabel
ans
.Menyebutnya dengan cara ini:
ans([-5, 3, 0, -2, 100])
. Ini tidak berfungsi pada tio, tetapi bekerja pada oktaf online .Nomor 2:
Ini hanyalah implementasi dari semacam gelembung, tanpa menggunakan karakter
@sort
. Kami tidak dapat menjadikan ini fungsi, karenao
, dan kami tidak dapat menggunakannyainput
karenat
. Karena itu kami terjebakeval
.eval(['a=inpu',116,'("");']);
mengevaluasi ke:,a=input("");
yang dapat kita gunakan untuk memasukkan vektor input kami. Sisanya adalah pengurutan gelembung tanpa menggunakanfor
ataumod
. Perhatikan bahwa ini harus disimpan dalam skrip dan dipanggil dari GUI / CLI. Anda tidak dapat menyalin-menempelkannya, karenainput("")
(ia akan menggunakan sisa kode sebagai input, sehingga gagal total).sumber
Haskell (lambdabot), 3 fungsi
Saya menggunakan lingkungan lambdabot untuk menghindari banyak
import
pernyataan. Bahkansort
kebutuhanimport Data.List
. lambdabot mengimpor banyak modul secara default. Selain yang hilangimports
, itu kode Haskell standar sesuai aturan kami.Cobalah online! .
Fungsi 1
Fungsi perpustakaan dari
Data.List
. Tidak banyak yang bisa dikatakan di sini.Fungsi 2
Fungsi
v
mengimplementasikan jenis-sisipan.Saya menggunakan penjaga pola untuk menghindari
()
parameter. Bandingkanvv v|vvv:vvvv<-v=...
denganvv(vvv:vvvv)=...
.Baris pertama, fungsi
vv
adalah fungsi pembantu untuk membuat daftar kosong. Dengan itu saya tidak perlu menggunakan[]
untuk menulis daftar kosong literal. Lebih mudah dibaca:(==:)
is insert, yang menyisipkan elemen ke dalam daftar yang diurutkan, sehingga daftar yang dihasilkan masih diurutkan. Lebih mudah dibaca:(=:)
berkurang. Lebih mudah dibaca:Dan akhirnya
v
yang mengurangi daftar input menatap dengan[]
:Fungsi 3
sort
dari Fungsi 1 membuat sebagian besar fungsi daftar-kaki (fold
,scan
,until
) tidak tersedia. Kebutuhan rekursi=
yang digunakan dalam Fungsi 2. Satu-satunya pilihan yang tersisa adalah menggunakan kombinator fixpointfix
. Saya sudah mulai denganyang merupakan semacam seleksi. Mengubahnya menjadi point-free (saya tidak bisa menggunakan lambdas
\f x ->...
, karena-
yang digunakan oleh gurad pola di Fungsi 2) memberikan:Membuat daftar singleton dari nilai dengan
return
adalah terlarang (sama untukpure
), jadi saya harus membangun fungsi saya sendiri:\x -> map (\y -> x+0*y) [1]
atau bebas poinflip map[1].(.(0*)).(+)
. Menggantireturn
hasil panensumber
MATL , 3 program
Program 1
Ini hanya menggunakan fungsi builtin, dengan input dan tampilan implisit.
Cobalah di MATL online .
Program 2
Ini terus menghasilkan permutasi acak dari input sampai semua perbedaan berturut-turut dari hasilnya adalah non-negatif (ini bogosort , seperti dicatat oleh @cz ). Waktu berjalan adalah non-deterministik dan rata-rata meningkat sangat cepat dengan ukuran input (yaitu, 𝒪 ( n! ) Untuk array size- n dengan semua entri berbeda).
Cobalah di MATL Online .
Program 3
Ini adalah loop yang menghitung minimum array, menghapus semua elemen yang sama dengan nilai itu, dan memproses sisanya. Ini dilakukan sebanyak ukuran input. Jika tidak semua entri dalam input berbeda, beberapa iterasi tidak akan berguna (tapi tidak berbahaya), karena array sudah dikosongkan.
Cobalah di MATL online .
sumber
Pip , 4 program
Program 1 - builtin
Potongan; mengasumsikan daftar di
x
.(
SN
untuk Sort Numeric)Program 2 - permutasi filter
Potongan; mengasumsikan daftar di
y
. Sangat lambat untuk input yang lebih panjang dari sekitar 7 item.Program 3 - eval
Potongan; mengasumsikan daftar di
z
.Program 4 - MergeSort
Fungsi anonim; panggilan dengan daftar sebagai argumen (suka
({...} [1 2])
atauf:{...} (f [1 2])
.Tidak Disatukan:
sumber
PowerShell , 2
Cobalah online!
Ini adalah cuplikan yang berjalan dalam (mis.) PowerShell setara dengan REPL. TIO Link menunjukkan penggunaan. Ini
sort
adalah alias untukSort-Object
cmdlet.Cobalah online!
Perintah PowerShell tidak peka huruf besar-kecil, sehingga kita bisa menggunakan
sort
untuk yang satu danSORT
yang lainnya. Ini mengambil larik input, mengurutkannya di tempat, dan lalu mengeluarkannya.sumber
Ruby, 2 program
Pertama - langsung:
Kedua - bagian yang sulit:
sumber
J
Program satu: 3 byte
seperti dalam
/:~ 3,1,2,1
output1 1 2 3
Cobalah online!
CATATAN dalam J, angka negatif diawali dengan _ tidak - sehingga Anda dapat mencoba 4, _10,56, _333 dll.
Program dua: 5 byte
sumber
Try it online
hal link ke sebuah halaman web pada TIO, untuk menghubungkan halaman dalam jawaban Anda dapat melakukan ini:[displayed text](link)
.:
dan~
terjadi pada keduanya.PHP 7, 2 program
Kedua program ini bisa lebih banyak golf.
Program 1, 254 byte, karakter
! "$&+.01:;=>?[]adeginoprtv
Semacam gelembung. Penggunaan
goto
untuk membuat loop seperti yang dibutuhkan loop bawaan()
.Program 2, 155 byte, karakter
#%'(),-67ACEFINORTUYZ^_{|}~
IF(...){}
menghindari penggunaan;
. Kode utama dikodekan dengan XOR, karena$
telah digunakan dalam program sebelumnya. Kode:sumber