Tantangan Anda adalah untuk mengurutkan string, tetapi bukan dengan urutan alfabet normal (abc..xyz), Anda akan mengurutkan string berdasarkan alfabet yang ditentukan.
Anda harus menulis sebuah program atau fungsi yang mengambil dua input: Sebuah abjad A dan string S . Keduanya hanya akan berisi huruf Inggris kecil, dan keduanya akan mengandung setidaknya satu karakter.
Anda harus memindahkan huruf dalam S sehingga huruf yang muncul pertama kali dalam A muncul terlebih dahulu, lalu huruf mana saja yang muncul kedua di A , dll. Mungkin ada beberapa huruf di S yang tidak muncul dalam A , ini harus dibiarkan di akhir dan tidak bergerak relatif satu sama lain.
Kasus uji:
A S Result
axd haxuizzxaxduxha aaaxxxxdhuizzuh
a xyz xyz
abc dcba abcd
il nmiuplliu iillnmupu
asdf qwerty qwerty
Bytes paling sedikit menang!
Jawaban:
05AB1E , 4 byte
Cobalah online!
Penjelasan
sumber
Σ²sk>
.R۠
bekerja seperti yang diharapkan :). Terkadang itu bisa berfungsi sebagaivy
loop yang lebih kecil . Pria jawaban yang bagus.Python 3 ,
50 47 4644 byte-3 byte terima kasih kepada ngn!
-1 byte terima kasih kepada mypetlion
Cobalah online!
Mengambil string sebagai alfabet dan daftar karakter sebagai string dan mengurutkan daftar di tempat.
The
%27
memastikan bahwa jika karakter tidak dalam alfabet, indeks yang dikembalikan menempatkannya setelah alfabet.sumber
-a[::-1].find(c)
->(a+c).find(c)
(a+c).find(c)
->a.find(c)%27
untuk menyimpan 1 byteHaskell, 42 byte
Cobalah online!
sumber
Perl 6 ,
5543 byteCobalah
Cobalah
Diperluas:
sumber
Haskell ,
4034 byte-6 byte besar terima kasih kepada Laikoni .
Cobalah online!
Baris pertama adalah ekspresi yang membutuhkan dua argumen: S dan A .
sumber
f=
karena fungsi anonim diizinkan.(<>)
sekarang di Prelude, jadi ini bisa disingkat menjadifoldr(\c->r(==c)<>r(/=c))
34 byte: Cobalah online!Stax , 6 byte
Jalankan dan debug itu
Ini semacam blok yang melakukan ini.
sumber
Python 2 , 38 byte
a harus berupa string, s daftar string panjang 1. f macam s di tempat.
Cobalah online!
Versi alternatif, string I / O, 48 byte
Cobalah online!
Bagaimana itu bekerja
s.sort(None,a[::-1],1)
adalah singkatans.sort(cmp=None,key=a[::-1],reverse=1)
.Dari dokumen :
sumber
cmp
dan dibuatkey
sertareverse
argumen hanya kata kunci, sehinggalist.sort
hanya membutuhkan satu argumen posisi.J , 5 byte
Kata kerja Dyadic, mengambil alfabet di sebelah kiri dan string yang akan diurutkan di sebelah kanan.
i.
menemukan indeces karakter string dalam alfabet, panjang alfabet jika tidak ditemukan./:
macam agrument kirinya sesuai dengan urutan yang ditentukan di sebelah kanan.]
argumen rigth (string)Cobalah online!
sumber
Python 2 ,
3550 byteCobalah online!
Mengambil
a
dans
sebagai string; mengembalikan daftar string singelton.Catatan: Aduh! Memperoleh 15 byte untuk diperbaiki ...
sumber
K (ngn / k) , 9 byte
Cobalah online!
{
...}
adalah fungsi dengan argumenx
dany
x?y
menemukan untuk setiap elemen dalamy
indeks kemunculan pertamanya dix
; jika elemen tidak ditemukanx
, indeksnya dianggap0N
(-2 63 )-
Meniadakan semua indeks kecuali bahwa itu menjaga0N
-s utuh, karena 2 63 ≡-2 63 (mod 2 64 )>
mengembalikan permutasi sort-descendingy@
indeksy
dengan itusumber
Arang , 13 byte
Cobalah online! Tautan adalah untuk mengucapkan versi kode. Penjelasan:
sumber
Jelly , 4 byte
Tautan diad menerima string di sebelah kiri dan alfabet di sebelah kanan (sebagai daftar karakter) dan mengembalikan hasilnya (juga sebagai daftar karakter).
Cobalah online!
Bagaimana?
sumber
APL (Dyalog Unicode) , 5 byte SBCS
Fungsi awalan diam-diam anonim, mengambil
[string,ordering]
sebagai argumen.Cobalah online!
...
/
Kurangi dengan fungsi berikut:...
⍨
yaitu versi argumen yang dibalik dari fungsi berikut:⍋
nilai string yang tepat sesuai dengan urutan kiri (huruf hilang pada bagian akhir)⌷
gunakan itu untuk mengindeks ke ...⊃
elemen pertama dari argumen (yaitu string)sumber
JavaScript (SpiderMonkey), 50 byte
Mengambil input dalam sintaks currying
(a)(s)
, di mana a adalah string dan s adalah array karakter. Mengembalikan array karakter.Cobalah online!
Bagaimana?
Kami mendefinisikan fungsi helper g () sebagai:
yang mengembalikan:
Kami mengurutkan s [] dengan menghitung g (b) - g (c) untuk setiap pasangan karakter (b, c) diteruskan ke callback of sort () .
Karena implementasi sort () di SpiderMonkey stabil, semua karakter s [] yang bukan milik alfabet hanya dipindahkan di akhir dalam urutan penampilan dan dibiarkan tidak berubah ketika mereka dibandingkan satu sama lain.
JavaScript (ES6), 61 byte
Mengambil input dalam sintaks currying
(a)(s)
, di mana a dan s adalah array karakter. Mengembalikan string.Cobalah online!
sumber
R ,
69 6258 byteCobalah online!
Input dan output adalah vektor karakter individu.
Penjelasan:
sumber
Brain-Flak (BrainHack) , 118 byte
Cobalah online!
Input adalah string pertama, diikuti oleh null, diikuti oleh string kedua. Versi yang menggunakan baris baru sebagai pemisah bukannya menambah 24 byte:
Brain-Flak , 142 byte
Cobalah online!
Penjelasan
sumber
C (gcc) , 97 byte
Semua spasi putih (spasi dan baris baru) dalam kode di atas hanya untuk dibaca dan harus dihapus.
Kamus dilewatkan
D
dan memiliki panjangd
, string dilewatkanS
dan memiliki panjangs
.i
dano
harus dihilangkan.Cobalah online!
sumber
Pyth ,
95 byteCoba di sini!
sumber
Java 8, 98 byte
Cobalah online.
Penjelasan:
sumber
String.repeat(int)
metode baru Java 11 . Bagus! :).repeat(n)
terlihat menjanjikan. : DPerl 5 dengan
-pF
, 43 byteCobalah online!
sumber
$_=<>;
gratis?@F
, tapi saya tidak menambahkannya ke header! Saya akan melakukannya sekarang! Terima kasih!Prolog (SWI) , 136 byte
Cobalah online! Contoh penggunaan:
sumber
Bersih , 61 byte
Cobalah online!
Menentukan fungsi
$ :: [Char] [Char] -> [Char]
.Tidak mengherankan, ini secara harfiah adalah jawaban Hasimi nimi tetapi lebih lama.
sumber
Jelly , 7 byte
Cobalah online!
sumber
APL + MENANG, 12 byte
Meminta input layar S lalu A:
Cobalah online! Atas perkenan Dyalog Classic
sumber
PynTree , 13 byte
Cobalah online!
Jawaban Port of Jo King's Python.
Penjelasan
sumber