Tujuan Golf Kode ini adalah untuk membuat program yang mengurutkan daftar string (dalam urutan menaik), tanpa menggunakan metode pengurutan bawaan apa pun (seperti Array.Sort()
dalam .NET, sort()
dalam PHP, ...). Perhatikan bahwa pembatasan ini mengecualikan menggunakan metode bawaan yang mengurutkan larik turun, dan kemudian membalikkan larik.
Beberapa detail:
Program Anda harus meminta input, dan input ini adalah daftar string yang hanya berisi karakter alfabet huruf kecil ASCII
a-z
, dipisahkan dengan koma tanpa spasi. Sebagai contoh:code,sorting,hello,golf
Outputnya harus berupa daftar string yang diberikan, tetapi diurutkan dalam urutan menaik, masih dipisahkan koma tanpa spasi. Sebagai contoh:
code,golf,hello,sorting
Ruby
765451 charssumber
x=gets.scan /\w+/
k (16 karakter)
Mungkin tidak benar-benar memenuhi semangat masalah. Dalam k, tidak ada operator sortir bawaan.
<x
mengembalikan daftar indeks item dalam x dalam urutan diurutkan.sumber
SED, 135
Berdasarkan entri penyortiran saya sebelumnya
sumber
Ruby, 99 karakter ( Gnome sort )
Ini hampir tidak bisa mengalahkan implementasi semacam gelembung saya:
Ruby,
110104101 karakter ( Bubble sort )Ini tidak
list.length
iterasi, karena skenario terburuk mengambillist.length - 1
iterasi dan satu lagi benar-benar tidak masalah, dan menghemat 2 karakter.Hanya untuk bersenang-senang, versi Quicksort:
Ruby, 113 karakter ( Quicksort )
sumber
Haskell, 141
Setidaknya itu ... agak efisien.
sumber
m=minimum
s[]=[]
s l=m l:(s$l\\[m l])
(ganti baris Anda 2–4 dengan baris ini).init
tampaknya tidak perlu karena ada tidak trailing,
, atau baris baru trailing.t s=let(a,b)=span(/=',')s in a:t(drop 1 b)
dapat dipersingkat dengan menggunakan penjaga pola, menggunakan(>',')
dan menjatuhkan ruang antara1 b
:t s|(a,b)<-span(>',')s=a:t(drop 1b)
.x#(y:r)|y<x=y:x#r;x#r=x:r
lebih pendek. Ini dapat digunakan secara langsungt
dan karena tidak digunakan(\\)
danintercalate","
dapat diganti dengantail.((',':)=<<)
, impor dapat dibatalkan. Secara keseluruhan 101 byte: Cobalah secara online!vba, 165
sumber
Split
.c=","
dan memanggilc
dua kali sebenarnya menambah jumlah byte dalam kasus ini, berkontribusi 7 byte ke jumlah byte, di mana hanya menggunakan "," dua kali akan berkontribusi 6 byte. Anda dapat menurunkan kode byte Anda dengan mengambil input langsung dari sub panggilan (sub q(s)
) dan dengan asumsi s adalah tipe varian \ string. Anda dapat kehilangan satu byte lagi dengan mengubahFor i=1 to
kefor i=1To
. Anda dapat kehilangan 5 byte dengan mengubahDebug.Print Join...
keDebug.?Join...
Scala, 122 byte
Sebagai satu-liner (88 byte):
(Ini akan mengurutkan daftar hanya dengan melakukan
list.permutations.fil...
)Sebagai sebuah program (122 byte):
Versi yang lebih panjang jika Anda ingin membacanya dari stdin.
Ini mengulangi semua permutasi dari daftar yang diberikan sampai tersandung pada yang diurutkan. Ini tidak cepat karena dibutuhkan sekitar 12 detik untuk mengurutkan daftar 10 elemen dan lebih dari satu menit untuk 11 elemen.
[Sunting] item harus unik atau
<
dapat diganti dengan<=
. Juga, maaf untuk necro.sumber
javascript 128
Biola DEMO .
Saya mencari cara untuk menghilangkan
b
.sumber
[]
sekitar setelah?
menyimpan 2 karakterSyntaxError: missing : in conditional expression
karena?:;
(singkatanif/else
) hanya seharusnya mengambil dua pecies dari kode untuk dieksekusi (yaitutrue?b++:b--;
) menggunakan[
,]
adalah hack, im masih tidak yakin mengapa ia bekerja, saya pikir itu dipahami sebagai array kosong deklarasi, seperti menempatkan string atau angka acak sebagai perintah yang berdiri sendiri. tetapi Anda masih bisa merasa bebas untuk memperbaiki.?:
prioritas operator lebih rendah daripada,
{
,}
dan itu tidak berhasil - saya mengertiSyntaxError: missing : after property id
. Adapun kurung didahului selalu pertama. saya masih ingin upvote ....PHP 83 byte
Sebuah O (n 3 ) pelaksanaan semacam seleksi. The
Ó
karakter 211; tanda koma sedikit terbalik.Penggunaan sampel:
sumber
Python 3 (80 karakter)
Berikut ini adalah variasi dari pernyataan sementara yang memiliki panjang yang sama:
sumber
Mathematica
6656Beberapa solusi lain tanpa simbol bawaan
Ordering
:Bogosort:
8474Sortir Bubble:
9383Solusi lain yang tidak efisien seperti bogosort:
8272sumber
Python 3.5+, 73 byte
Ini mengambil inspirasi dari jawaban Steven Rumbalski tetapi menggunakan pemahaman daftar alih-alih putaran sementara; jumlah iterasi berasal dari daftar
l
yang disalin yang merupakan alasan ini memerlukan generalisasi pembongkaran tambahan dan Python 3.5sumber
R
Sortir Bubble:
122118 karakterBogosort: 100 karakter
sumber
Perl, 159
Ini tidak pernah memiliki kesempatan untuk menang, tetapi memutuskan untuk membagikannya karena saya menyukai logikanya meskipun itu berantakan :) Gagasan di baliknya, adalah mengubah setiap kata menjadi integer (selesai menggunakan fungsi ord ), kami menyimpan nomornya sebagai kunci dalam hash dan string sebagai nilai, dan kemudian kita beralih semakin banyak melalui semua bilangan bulat (1..10 ** 100 dalam kasus ini) dan dengan cara itu kita mendapatkan string kita diurutkan.
PERINGATAN : Jangan jalankan kode ini di komputer Anda, karena itu loop melalui triliunan + bilangan bulat. Jika Anda ingin mengujinya, Anda dapat menurunkan batas rentang atas dan memasukkan string yang tidak panjang. Jika karena alasan apa pun ini melanggar aturan, harap beri tahu saya dan saya akan menghapus entri!
sumber
JS: 107 karakter - Bubble Sort
Saya melihat jawaban @ triedToGetProgrammingStraight dan mencoba memperbaikinya, tetapi akhirnya menerapkannya sedikit berbeda.
sumber
Java, 134 byte
Metode yang mengimplementasikan Gnome Sort.
sumber
Swift, 101 byte
Tidak Disatukan:
sumber
𝔼𝕊𝕄𝕚𝕟, 24 karakter / 30 byte (tidak kompetitif)
Try it here (Firefox only).
Menggunakan semacam seleksi!
Penjelasan
Pada dasarnya secara rekursif menghapus dan mendorong minimum dari input ke array lain.
sumber
Ceylon (Bogosort), 119
Cobalah online!
Saya menemukan
permutations
metode dan akhirnya Bogosort (varian non-acak).Diformat dan dikomentari:
Tanpa pemformatan dan penguraian menjadi hanya 90 byte:
Cobalah online!
sumber
Perl 5 , 77 byte
Cobalah online!
Semacam gelembung sederhana.
sumber
ruby -plaF,
, 70 byteO (n), jika Anda berpura-pura mengubah ukuran dan memadatkan array adalah gratis (sangat tidak gratis).
Kami membuat array bertingkat yang dalam dan tidak merata
o
dengan meletakkan string dengan byte b 1 , b 2 ... b n ke dalam array pada posisi o [b 1 ] [b 2 ] ... [b n ]. Hasilnya terlihat seperti[,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,["a,",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, [,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ["abc,"], ["abd,"], ["abe,"]], ["ac,"], ["ad,"]],, ["c,"]]
Lalu kami meratakan dan mengeluarkannya.
sumber
Tcl , 211 byte
Cobalah online!
sumber