Surat pertama , Bergeraklah! sangat populer, tetapi memiliki partisipasi terbatas. Yang ini akan lebih mudah untuk dipecahkan, tetapi semoga melibatkan beberapa trik dalam bermain golf.
Anda hanya diberi string huruf kecil saja. Untuk setiap huruf, dengan posisi pada alfabet m , pindahkan sehingga menjadi huruf ke- m dari akhir. Jika nilai m lebih panjang dari panjang string, pindahkan ke bagian paling depan. Hanya menghasilkan string yang sepenuhnya berubah.
Contoh:
"jerapah"
- 'g' adalah huruf ke-7 dalam alfabet, itu sudah huruf ke-7 dari belakang, jadi tinggalkan saja.
- 'i' adalah huruf ke-9, karena angka 9 lebih besar dari panjang kata, ia berada di depan, sehingga string menjadi
igraffe
- 'r' adalah huruf ke-18, seperti 'i' di bagian depan:
rigaffe
- 'a' adalah huruf pertama, sampai akhir:
rigffea
- 'f' adalah huruf ke-6, menjadi huruf ke-6 dari belakang:
rfigfea
- huruf 'f' berikutnya juga merupakan huruf ke-6, jadi huruf ke-6 dari belakang:
rffigea
- 'e' adalah huruf ke-5, dan huruf ke-5 dari belakang:
rfefiga
"bunga"
- 'f' (6) =>
flower
- 'l' (12) =>
lfower
- 'o' (15) =>
olfwer
- 'w' (23) =>
wolfer
- 'e' (5) =>
weolfr
- 'r' (18) =>
rweolf
"nanas"
- 'p' (16) =>
pineapple
- 'i' (9) =>
ipneapple
- 'n' (14) =>
nipeapple
- 'e' (5) =>
nipaepple
- 'a' (1) =>
nipepplea
- 'p' (16) =>
pnipeplea
- 'p' (16) =>
ppnipelea
- 'l' (12) =>
lppnipeea
- 'e' (5) =>
lppneipea
(pastikan Anda memindahkan e yang belum pernah dipindahkan! Ini tidak masalah, tetapi di bawahnya tidak.)
Terima kasih kepada @Neil untuk meningkatkan kasus uji dengan 3 tambahan ini:
"Pizza"
- 'p' (16) =>
pizza
- 'i' (9) =>
ipzza
- 'z' (26) =>
zipza
- 'z' (26) =>
zzipa
(memindahkan z kedua!) - 'a' (1) =>
zzipa
"omong kosong"
- 'a' (1) =>
bracadabraa
- 'b' (2) =>
racadabraba
- 'r' (18) =>
racadabraba
- 'a' (1) =>
rcadabrabaa
- 'c' (3) =>
radabrabcaa
- 'a' (1) =>
rdabrabcaaa
- 'd' (4) =>
rabrabcdaaa
- 'a' (1) =>
rbrabcdaaaa
- 'b' (2) =>
rrabcdaaaba
- 'r' (18) =>
rrabcdaaaba
- 'a' (1) =>
rrbcdaaabaa
"karakter"
- 'c' (3) =>
haractecrs
- 'h' (8) =>
arhactecrs
- 'a' (1) =>
rhactecrsa
- 'r' (18) =>
rhactecrsa
- 'a' (1) =>
rhctecrsaa
- 'c' (3) =>
rhtecrscaa
- 't' (20) =>
trhecrscaa
- 'e' (5) =>
trhcrescaa
- 'r' (18) =>
rtrhcescaa
- 's' (19) =>
srtrhcecaa
code-golf
string
permutations
geokavel
sumber
sumber
Python 3, 78 byte.
Disimpan 2 byte berkat orlp.
Disimpan 7 byte berkat DSM.
Buat kata sebagai daftar lalu gabungkan.
sumber
(q-p,0)[p>q]
lebih panjang darimin(q-p,0)
.max(q-p,0)
.Python 2, 86 byte
Python 3, 88 byte
Contohnya
Python 2:
Python 3:
sumber
k.remove
menghapus instance pertama, jadi ini akan gagal untuk sesuatu sepertibaa
.Javascript ES6,
136134131 bytePerhatikan bahwa saya sangat berhati-hati untuk tidak memindahkan karakter yang sama dua kali, jika tidak
pizza
berubah menjadizipza
seperti seharusnyazzipa
. Ada juga kasus tepi yang berurusan dengan tidak menghapus karakter sebelum waktunya;characters
menjadi mungkinsrtrchaeac
atausrtrheccaa
jika Anda melakukannya dengan salah tetapi seharusnyasrtrhcecaa
. Kata lain yang sulit adalahabracadabra
yang hasilnyarrabaaadcba
salah;rrbcdaaabaa
akan benar.Sunting: Memotong dua byte dengan menggunakan substring yang secara otomatis memaksa argumennya ke kisaran 0..length.
Sunting: Memangkas tiga byte dengan mengubah substring pertama ke substring seperti yang disarankan oleh user81665.
sumber
substr
bukansubstring
.slice
lebih baik (saya pikir).slice
dalamnya.pizza
test case yang Anda pasang di posting saya, tapi saya memperbaikinya.Pyth,
1817 byteTest Suite .
Iterasi menggunakan pengurangan di atas string input, memasukkan ke dalam string, string kosong kasus dasar, pada posisi yang benar.
sumber
𝔼𝕊𝕄𝕚𝕟, 23 karakter / 40 byte
Try it here (Firefox only).
Penjelasan
sumber