Las personas en este sitio realmente adoran embellecer sus títulos de publicaciones ...
Stewie's sequence: + * - / + * - /
Sin embargo, cuando este título debe incluirse en la URL de la página, se simplifica:
stewies-sequence
El reto
Su tarea es crear un programa o función que, dada una cadena que representa el título de una publicación, genera / devuelve su conversión "URL-Friendly".
El algoritmo es:
- Convertir a minúsculas (cuando corresponda)
- Reemplace cada espacio (
), punto (
.
), coma (,
) o barra diagonal (/
) con un guión (-
) - Elimine los caracteres no alfanuméricos, excepto los guiones.
- Minifique grupos de guiones adyacentes (
a---b -> a-b
), elimine los que están al principio / al final
Tenga en cuenta que este algoritmo es una simplificación y que no siempre produce los mismos resultados que el método real del sitio.
Reglas
- Puede suponer esa entrada:
- No estará vacío.
- Contendrá al menos un carácter alfanumérico.
- Solo contendrá caracteres en el rango ASCII 32-126 (imprimible)
- Se permiten programas o funciones completos.
- No se permite una construcción que haga la especificación exacta de la tarea .
- Este es el código de golf , por lo que gana la solución más corta (en bytes).
Casos de prueba
La mayoría de las publicaciones en este sitio servirán como pruebas, pero aquí hay una lista útil:
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
Algunos más largos ...
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
Y algunas muestras de verificación de casos extremos (siéntase libre de sugerir más):
0123 -> 0123
a a1 -> a-a1
2-1=1 -> 2-11
if(isalphanum(ch))...
_
guiones bajos? Mi código funciona excepto cuando hay guiones bajos.
-
s principales ? ¿Tendrán que ser removidos? Por ejemploasdf-
, ¿se-
tendrá que eliminar el último ?