Orang-orang di situs ini sangat suka memperindah judul posting mereka ...
Stewie's sequence: + * - / + * - /
Namun, ketika judul ini perlu dimasukkan dalam URL halaman, itu disederhanakan:
stewies-sequence
Tantangan
Tugas Anda adalah membuat program atau fungsi yang, mengingat string yang mewakili judul tulisan, menampilkan / mengembalikan konversi "Ramah URL" -nya.
Algoritma adalah:
- Konversikan ke huruf kecil (jika ada)
- Ganti setiap spasi (
), titik (
.
), koma (,
) atau garis miring (/
) dengan tanda hubung (-
) - Hapus karakter non-alfanumerik, kecuali tanda hubung.
- Perkecil grup dengan garis putus-putus yang berdekatan (
a---b -> a-b
), hapus semua yang mengarah / tertinggal.
Harap perhatikan bahwa algoritma ini adalah penyederhanaan, dan mungkin tidak selalu menghasilkan hasil yang sama dengan metode nyata situs.
Aturan
- Anda dapat mengasumsikan input itu:
- Tidak akan kosong
- Akan mengandung setidaknya satu karakter alfanumerik.
- Hanya akan berisi karakter dalam rentang ASCII 32-126 (dapat dicetak)
- Program atau fungsi lengkap diizinkan.
- Sebuah builtin yang melakukan spesifikasi tugas yang sebenarnya adalah tidak diizinkan.
- Ini adalah kode-golf , jadi solusi terpendek (dalam byte) menang!
Uji Kasus
Sebagian besar posting di situs ini akan berfungsi sebagai tes, tetapi berikut daftar praktisnya:
Loading... Forever -> loading-forever
N(e(s(t))) a string -> nest-a-string
"Hello, World!" -> hello-world
URL-Friendly titles -> url-friendly-titles
C.U.S.R.S -> c-u-s-r-s
1+2+3+4+...+n = -1/12? -> 1234-n-1-12
How can I use cmp(a,b) -> how-can-i-use-cmpa-b
Beberapa lagi ...
Export The $PATH Variable, Line-By-Line -> export-the-path-variable-line-by-line
Do n and n^3 have the same set of digits? -> do-n-and-n3-have-the-same-set-of-digits
Quine Anagrams! (Cops' Thread) -> quine-anagrams-cops-thread
The Golfer Adventure - Chapter 1 -> the-golfer-adventure-chapter-1
Bootloader golf: Brainf*** -> bootloader-golf-brainf
Dan beberapa sampel pengecekan tepi (jangan ragu untuk menyarankan lebih):
0123 -> 0123
a a1 -> a-a1
2-1=1 -> 2-11
if(isalphanum(ch))...
_
garis bawah? Kode saya berfungsi kecuali jika ada garis bawah.
-
? Apakah mereka harus disingkirkan? Misalnya dalamasdf-
, apakah yang terakhir-
harus dihapus?