Tantangan
Diberikan daftar nama warna unik sebagai input, urutkan mereka dalam urutan yang pertama kali muncul di Amazing Technicolor Dreamcoat Joseph .
Contoh
Input: green, blue, red, brown
Output: red, green, brown, blue
Daftar lengkap warna, secara berurutan, adalah:
1. red
2. yellow
3. green
4. brown
5. scarlet
6. black
7. ochre
8. peach
9. ruby
10. olive
11. violet
12. fawn
13. lilac
14. gold
15. chocolate
16. mauve
17. cream
18. crimson
19. silver
20. rose
21. azure
22. lemon
23. russet
24. grey
25. purple
26. white
27. pink
28. orange
29. blue
Atau sebagai array string:
["red","yellow","green","brown","scarlet","black","ochre","peach","ruby","olive","violet","fawn","lilac","gold","chocolate","mauve","cream","crimson","silver","rose","azure","lemon","russet","grey","purple","white","pink","orange","blue"]
Aturan
- Anda dapat mengambil input dengan cara yang masuk akal dan nyaman (misalnya, serangkaian string, string yang dibatasi, string individual) selama diizinkan oleh aturan I / O standar kami , tetapi harap tentukan metode input Anda dalam jawaban Anda.
- Anda dapat melakukan hal yang sama untuk output Anda.
- Input hanya akan berisi warna dari daftar di atas.
- Solusi Anda harus dapat menangani input kosong.
- Anda dapat memilih apakah semua kata dalam input secara konsisten adalah huruf besar, huruf kecil atau judul huruf tetapi casing output Anda harus cocok dengan input Anda.
- Ini adalah kode-golf sehingga jumlah byte terendah dalam setiap bahasa menang.
- Seperti biasa, lubang standar dilarang.
Uji kasus
Input: []
Output: []
Input: ["green", "blue", "red", "brown"]
Output: ["red", "green", "brown", "blue"]
Input: ["gold", "grey", "green"]
Output: ["green", "gold", "grey"]
Input: ["ruby","yellow","red","grey"]
Output: ["red", "yellow", "ruby", "grey"]
Input: ["gold", "green", "fawn", "white", "azure", "rose", "black", "purple", "orange", "silver", "ruby", "blue", "lilac", "crimson", "pink", "cream", "lemon", "russet", "grey", "olive", "violet", "mauve", "chocolate", "yellow", "peach", "brown", "ochre", "scarlet", "red"]
Output: ["red", "yellow", "green", "brown", "scarlet", "black", "ochre", "peach", "ruby", "olive", "violet", "fawn", "lilac", "gold", "chocolate", "mauve", "cream", "crimson", "silver", "rose", "azure", "lemon", "russet", "grey", "purple", "white", "pink", "orange", "blue"]
code-golf
array-manipulation
Shaggy
sumber
sumber
Jawaban:
PowerShell ,
26215515112712595 byteCobalah online!
Pendekatan naif.PowerShellsort-object
dapat mengurutkan berdasarkan blok skrip yang dijalankan untuk setiap objek. Di sini kita hanya mendapatkan.IndexOf()
warna dari string, yang akan menetapkan nilai numerik untuk setiap warna, dan kemudian mengurutkan berdasarkan angka-angka itu. String dibuat dari huruf keempat dan pertama dari setiap warna untuk memastikan keunikan. Output tersirat.-4 byte terima kasih kepada Shaggy.
-2 byte berkat mazzy.
-30 Bytes kekalahan berkat KGlasier.
sumber
green grey
yang berada dalam urutan abjad yang tepat..IndexOf()
akan kembali-1
jika string tidak ditemukan, yang manared
yang sesuai dengan urutan yang benar. Terima kasih!JavaScript (SpiderMonkey) ,
106 105104 byte"Ketika ragu, hanya perlu masukan berdarah."
Cobalah online!
sumber
%99%55
Tidak lebih baik daripada%123%55
dengan pendekatan ini). Jadi sudah pasti kurang optimal. Saya mungkin akan mencoba sesuatu yang sedikit lebih canggih nantinya.Jelly , 28 byte
Cobalah online!
Bagaimana itu bekerja
µ
mengubah segalanya ke kiri menjadi rantai monadik, yangÞ
memetakan array input dan mengurutkan input sesuai dengan nilai yang dihasilkan.“½Ṗ©cƘʂẒẹMMỤẓHP’
menetapkan nilai kembali ke 176073885534954276199526358143331.Œ?
“ðÑþQ’
hasil 391695582;,
menambahkannya ke permutasi. Kemudian,ḥ
komputasi fungsi hash Jelly 391695582 ke-3 , memetakan ember yang dihasilkan ke bilangan bulat permutasi.Konstanta ajaib 391695582 ditemukan oleh utilitas Jelly .
sumber
Python 3 , 93 byte
Cobalah online!
Membaca setiap warna sebagai basis-36
int
. Brute memaksa moduli dan memilih offset acak di antara 19 yang tidak membutuhkan pelarian.sumber
Powershell,
124120124119118102 byteCobalah secara Online!
Penjelasan:
String data berisi huruf signifikan pertama dari label warna dalam urutan menurun. Kecuali untuk
Grey
label -G*y
lebih pendek.-csplit'(?=[A-Z])'
memisahkan string data ke array(blu,Or,Pi,W,Pu,G*y,Rus,Le,A,Ro,Si,Cri,Cr,M,C,Go,L,F,V,Ol,Ru,P,O,Bl,S,B,G,Y,R)
|%{$c-like"$_*"}
memetakan array string ke array boolean. Di manaTrue
berarti "label warna dimulai dari string ini" (seperti operator yang case-sensitive, csplit - case-sensitive. Lihat doc ).sort{}
mengurutkan tabel warna dengan array boolean dalam urutan menaik .Penyortiran menurut array adalah fitur yang sangat menarik di Powershell. Dalam skrip ini semua array memiliki panjang yang sama dan hanya berisi nilai Boolean. Penyortiran ini dilakukan dalam urutan leksografis dari array boolean.
Oleh karena itu, string dapat berisi singkatan satu huruf untuk label terakhir. Jika ada kecocokan di awal array, kecocokan di akhir tidak berpengaruh.
Di mana
T
adalahtrue
dan-
adalahfalse
.Skrip uji:
Keluaran:
sumber
This site can’t be reached
kesalahan. Maaf.Saya akan meningkatkan kompresi string dalam beberapa saat
Japt ,
887871 byteCobalah online!
sumber
Bahasa Wolfram
255 213199 byteEmpat belas byte disimpan oleh Dennis, yang menghindari tanda "", menggunakan simbol bukan string.
Cobalah secara Online!
sumber
Python 2 , 186 byte
Cobalah online!
Temukan semua kecocokan untuk substring karakter progresif (Contoh: "hijau" akan memeriksa "g", "gr", "gre", "gree", dan "green") dalam string pengidentifikasi, dan menyimpan indeks maksimum. "red" selalu yang pertama, dan jika menemukan () mengembalikan -1 untuk pertandingan yang hilang, jadi tidak ada pengidentifikasi untuk merah secara khusus.
Setelah warna berubah menjadi pasangan (indeks, warna), susun array pada item pertama dari pasangan dan kemudian buang item pertama dari setiap pasangan.
sumber
Python 3 , 130 byte
Cobalah online!
sumber
ca
merupakan substratcca
untuk cokelat.C # (Visual C # Interactive Compiler) ,
321219210161159138 byteCobalah online!
-3 byte terima kasih kepada Shaggy, -18 terima kasih kepada TheLethalCoder
Mengambil input sebagai
List<string>
, mengembalikan sebuahIOrderedEnumerable<string>
Cara kerjanya adalah bahwa ia memesan daftar dengan indeks masing-masing string di string asli. String asli memiliki setiap warna kecuali abu-abu berubah menjadi tiga huruf pertama. Abu-abu tidak ada di sana, karena hijau dan abu-abu akan menyebabkan ambiguitas. Merah juga tidak ada, karena
IndexOf
mengembalikan -1 jika string tidak muncul.Versi lebih pendek mengambil IOrderedEnumerable sebagai input, 137 byte
Mengambil keuntungan dari fakta bahwa
ThenBy
1 byte lebih pendek dariOrderBy
, tetapiThenBy
hanya beroperasi padaIOrderedEnumerable
s.Cobalah online!
sumber
red
dari string pencarian Anda dan ganti68
dengan65
untuk menghemat 3 byte. Di ponsel saya jadi belum sepenuhnya mengujinya.n=>n.OrderBy(a=>a!="grey"?"redyelgrebroscablaochperuboliviofawlilgolchomaucrecrisilrosazulemruspurwhipinorablu".IndexOf(a.Substring(0,3)):68);
Namun, Anda harus memasukkanusing
s dalam jumlah byte Anda karena mereka harus dijalankan. Anda dapat menggunakan trik namespace untuk mempersingkat penghitungan yang diperlukan.namespace System.Linq{}
atau apa pun yang Anda pilih.Arang ,
69686356 byteCobalah online! Tautan adalah untuk mengucapkan versi kode. Penjelasan:
Ambil string yang dikompresi
edyeeebrscckhrpeubivvifa99gohomaamrisiosazemuseypuwhpiorlu
dan lilitkan setiap substring dengan panjang 2.Untuk setiap substring, cetak string input yang berisi substring itu, kecuali jika substring itu
99
, dalam hal ini yang dicarilil
. (lilac
adalah satu-satunya warna yang tidak memiliki substring dua huruf yang unik;olive
termasukli
;silver
termasukil
danblack
termasuklac
.fawn
danazure
dapat dideteksi hanya dengan menggunakan satu huruf, tetapi itu tidak membantu di sini.)sumber
Pyth, 66 byte
Coba online di sini , atau verifikasi semua uji sekaligus di sini .
Warna dalam daftar dapat diidentifikasi secara unik dengan mengambil karakter pada indeks
0
dan3
, dengan asumsi pengindeksan modular. Ini menghasilkan pemetaan berikut:Penjelasan lengkap:
sumber
05AB1E , 48 byte
Solusi yang sama dengan sebagian besar jawaban lainnya. Akan mencoba golf turun dari sini nanti.
Cobalah secara online atau verifikasi semua kasus uji .
Penjelasan:
Lihat ini ujung 05AB1E (bagian Cara string kompres bukan bagian dari kamus? ) Untuk memahami bagaimana
.•Aå₂мÕh∊þèmvƶ\kΛ1YŠíJ>J#θ₁2©€,Ù{η¦ù-•
ini"rrylgebwsrbcorpcryovvlfnlagdccmvcacmsvrearlorsgyppwtpkonbe"
.sumber