Ludzie na tej stronie naprawdę lubią upiększać tytuły swoich postów ...
Stewie's sequence: + * - / + * - /
Jednak gdy tytuł ten musi być zawarty w adresie URL strony, jest uproszczony:
stewies-sequence
Wyzwanie
Twoim zadaniem jest stworzenie programu lub funkcji, która, biorąc pod uwagę ciąg znaków reprezentujący tytuł postu, wyświetla / zwraca konwersję „przyjazną adresowi URL”.
Algorytm to:
- Konwertuj na małe litery (w stosownych przypadkach)
- Zamień każdą spację (
), kropkę (
.
), przecinek (,
) lub ukośnik (/
) na myślnik (-
) - Usuń wszystkie znaki niealfanumeryczne, z wyjątkiem myślników.
- Zminimalizuj grupy sąsiadujących myślników (
a---b -> a-b
), usuń te, które prowadzą / kończą.
Należy pamiętać, że ten algorytm jest uproszczeniem i nie zawsze może dawać takie same wyniki, jak prawdziwa metoda witryny.
Zasady
- Możesz założyć, że dane wejściowe:
- Nie będzie pusty.
- Będzie zawierać co najmniej jeden znak alfanumeryczny.
- Będzie zawierał tylko znaki z zakresu ASCII 32-126 (do wydruku)
- Pełne programy lub funkcje są dozwolone.
- Wbudowanym poleceniem, które ma zadanie dokładną specyfikację jest nie dozwolone.
- To jest golf golfowy , więc wygrywa najkrótsze rozwiązanie (w bajtach)!
Przypadki testowe
Większość postów na tej stronie będzie służyć jako testy, ale oto przydatna lista:
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
Niektóre dłuższe ...
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
I niektóre próbki sprawdzające wielkość liter (możesz zaproponować więcej):
0123 -> 0123
a a1 -> a-a1
2-1=1 -> 2-11
if(isalphanum(ch))...
_
podkreśleniami? Mój kod działa poza przypadkami podkreślenia.
-
? Czy będą musiały zostać usunięte? Na przykład zaasdf-
czy ostatnie będą-
musiały zostać usunięte?