Défi
Étant donné un goo.gl
lien raccourci valide , affichez l'URL d'origine.
Exemple
goo.gl/qIwi3N
donnerait quelque chose comme https://codegolf.stackexchange.com/
. Pour la saisie, vous pouvez choisir d'avoir le https?://
au début, vous pouvez choisir d'avoir www.
avant le goo.gl
, et vous pouvez également choisir de vous débarrasser du goo.gl
si vous ne voulez que la fin de l'URL. Une barre oblique à la fin est facultative pour l'entrée et la sortie. Ainsi, votre entrée finira par correspondre à l'expression régulière (https?://)?(www\.)?(goo\.gl/)?[A-Za-z0-9]+/?
. Pour la sortie, vous pouvez choisir de sortir ou non, de sortir https?://
ou non www.
, et de sortir ou non une barre oblique de fin. Cependant, vous devez être compatible avec votre E / S formatage .
Je dirai que vous ne devez pas être cohérent avec https
vs. http
pour la sortie (mais vous devez être cohérent pour l'entrée), tant que vous êtes cohérent avec si vous incluez la https?://
partie entière ou non .
Cas de test
Celles-ci sont écrites sans https://
, ni www.
, ni barre oblique de fin dans l'entrée; oui https://
, non www.
et oui barre oblique de fin dans la sortie.
input -> output
goo.gl/HaE8Au -> https://codegolf.stackexchange.com/
goo.gl/IfZMwe -> https://stackoverflow.com/
goo.gl/JUdmxL -> https://chat.stackexchange.com/rooms/240/the-nineteenth-byte
Hypothèses
- Vous pouvez supposer que le lien raccourci ne pointera pas vers un autre lien raccourci et que le site de destination renverra un code d'état de
2xx
ou4xx
(aucune redirection).
Vous pouvez aller ici et entrer une URL pour appliquer l'opération inverse de ceci: https://goo.gl/
www.
fait une différence. Il s'agit dans la plupart des cas du même serveur auquel il fait référence. Essayez par exemplehttp://pks.mpg.de
ethttp://www.pks.mpg.de
. Le premier ne peut pas être résolu, tandis que le second le peut.Réponses:
CJam , 7 octets
Essai
Comment ça fonctionne
lg
lit une ligne de STDIN et fait une requête GET à cette URL. L'URL raccourcie émet une redirection 301, que CJam ne suit pas. Pour le premier cas de test, cela poussesur la pile. Enfin,
'"/
se divise en guillemets doubles et5=
obtient le sixième morceau. La sortie est implicite.la source
Python 2 + requêtes, 44 octets
requests.get(URL)
émet une demande GET vers l'URL spécifiée. Leurl
champ de l'objet de réponse contient l'URL finale, après toute redirection. Un protocole (par exemplehttp://
) est requis pour l'entrée, et l'entrée devrait être entre guillemets.la source
requests
n'est pas intégré, donc cela doit être ajouté à l'en-tête de la langue.lambda
expression pour -3 octetsBash ,
2824 octetsLa sortie se termine par une nouvelle ligne de style Windows, qui, je suppose, est acceptable.
Essai
Comment ça fonctionne
curl -I
envoie une requête HEAD, donc il ne récupère que les en-têtes HTTP de l'URL spécifiée. Pour le premier cas de test, il imprimeou similaire. La sortie est dirigée vers
grep -oehtt.*
, qui n'affiche que les parties qui correspondent à l'expression régulière spécifiée, c'est-à-dire la chaîne htt suivie de n'importe quelle quantité de caractères jusqu'à la fin de la ligne.la source
htt.*
donc suppose qu'aucun fichier correspondant à celui-ci n'existe dans le répertoire courant. Pour la plupart des expressions rationnelles, je suis d'accord sur ce site que les possibilités de correspondance d'un fichier sont suffisamment petites pour que ce soit correct, mais dans ce cas, je ne le pense pas, moi-même. Le code source du noyau Linux comprend des fichiers nomméshtt.c
ethtt.h
, par exemple. Le changer engrep -oehtt.*
n'augmente pas le nombre d'octets, mais le rend beaucoup moins susceptible de causer des problèmes.-oehtt.*
c'est un bon moyen de le rendre plus fiable.PHP, 36 octets
Entrée avec
https://
get_headers
25 octets si
Location:
au début ne doit pas être supprimési Google change l'en-tête HTTP, voici une version plus sûre
la source
Python 2 , 43 octets
N'a pas de dépendances et est actuellement plus court que l'autre réponse Python. haussement L' entrée doit correspondre
https?://goo\.gl/.*?/?
la source
NodeJS, 60 octets
L'entrée est au format
http://goo.gl/<id>
.la source