Les URL deviennent trop longues. Vous devez donc implémenter un algorithme pour raccourcir une URL.
je. La structure d'une URL
Une URL se compose de 2 parties principales: un domaine et un chemin . Un domaine est la partie de l'URL avant la première barre oblique. Vous pouvez supposer que l'URL n'inclut pas de protocole. Le chemin est tout le reste.
ii. Le domaine
Le domaine d'une URL sera quelque chose comme: xkcd.com
meta.codegolf.stackexcchhannnge.cooom
. Chaque partie est séparée par des périodes, par exemple dans blag.xkcd.com
, les parties sont "blag", "xkcd" et "com". Voici ce que vous en ferez:
S'il contient plus de deux parties, mettez les deux dernières de côté et concaténez la première lettre du reste des parties.
Ensuite, concaténez cela à la première lettre de l'avant-dernière partie.
Ajoutez un point et les deuxième et troisième lettres de l'avant-dernière partie.
Jetez la dernière partie.
iii. Le chemin
Le chemin sera comme: /questions/2140/
/1407/
. Comme auparavant, les "pièces" sont séparées par des barres obliques. Pour chaque partie du chemin, faites:
Ajouter une barre oblique
S'il est entièrement composé de chiffres de base dix, interprétez-le comme un nombre et convertissez-le en un entier de base 36.
Sinon, ajoutez la première lettre de la pièce.
À la fin, ajoutez une barre oblique.
iv. Divers
- C'est le code-golf , donc le code le plus court l'emporte.
- Le chemin peut être vide, mais l'URL se terminera toujours par une barre oblique.
- Il n'y aura pas de protocole (par exemple
http://
,file:///
) - Il n'y aura jamais moins de deux parties dans le domaine.
- Des échappatoires standard s'appliquent.
Exemples
Entrée: xkcd.com/72/
Sortie:x.kc/20/
Entrée: math.stackexchange.com/a/2231/
Sortie:ms.ta/a/1pz/
Entrée: hello.org/somecoolcodeintrepreteriijjkk?code=3g3fzsdg32,g2/
Sortie:h.el/s/
kk
et tout ce qui commence par?
est une chaîne de requête, qui ne devrait pas se terminer par une barre oblique? De plus, toutes les URL ne se terminent pas par une barre oblique/
, commewww.something.com/path
. Ou cela n'est-il pas pertinent aux fins de ce défi?