Wyzwanie
Podając prawidłowy goo.gl
skrócony link, wyślij oryginalny adres URL.
Przykład
goo.gl/qIwi3N
dałby coś takiego https://codegolf.stackexchange.com/
. W przypadku danych wejściowych możesz wybrać opcję https?://
na początku, możesz wybrać opcję www.
przed goo.gl
, a także możesz pozbyć się tego, goo.gl
jeśli chcesz tylko końca adresu URL. Ukośnik na końcu jest opcjonalny dla wejścia i wyjścia. Tak więc twoje dane wejściowe będą pasować do wyrażenia regularnego (https?://)?(www\.)?(goo\.gl/)?[A-Za-z0-9]+/?
. W przypadku danych wyjściowych możesz wybrać, czy chcesz wypisać https?://
, czy nie www.
, i czy wypisać ukośnik końcowy. Jednak trzeba być zgodne z formatowania I / O .
Powiem, że nie musisz być spójny z https
vs. http
dla danych wyjściowych (ale musisz być konsekwentny dla danych wejściowych), o ile jesteś zgodny z tym, czy uwzględnisz całą https?://
część.
Przypadki testowe
Są one zapisywane bez wejściowego ukośnika; https://
nie www.
, nie; tak https://
, nie www.
i tak końcowy ukośnik na wyjściu.
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
Założenia
- Możesz założyć, że skrócony link nie będzie wskazywał na inny skrócony link i że witryna docelowa zwróci kod statusu
2xx
lub4xx
(brak przekierowań).
Możesz przejść tutaj i wprowadzić adres URL, aby zastosować odwrotną operację: https://goo.gl/
www.
robi różnicę. W większości przypadków jest to ten sam serwer, do którego się odnosi. Spróbuj na przykładhttp://pks.mpg.de
ihttp://www.pks.mpg.de
. Pierwszego nie można rozwiązać, podczas gdy drugiego można.Odpowiedzi:
CJam , 7 bajtów
Testowe uruchomienie
Jak to działa
lg
odczytuje wiersz ze STDIN i wysyła żądanie GET do tego adresu URL. Skrócony adres URL powoduje przekierowanie 301, którego CJam nie przestrzega. W przypadku pierwszego przypadku testowego popycha tona stosie. Wreszcie
'"/
dzieli się na podwójne cudzysłowy i5=
otrzymuje szósty fragment. Wynik jest niejawny.źródło
Żądania w języku Python 2 +, 44 bajty
requests.get(URL)
wysyła żądanie GET na podany adres URL. Pole obiektu odpowiedziurl
zawiera końcowy adres URL, po przekierowaniach. Protokół (np.http://
) Jest wymagany dla danych wejściowych i oczekuje się, że dane wejściowe będą w cudzysłowach.źródło
requests
nie jest wbudowany, więc należy go dodać do nagłówka języka.lambda
wyrażenia dla -3 bajtówBash ,
2824 bajtówWyjście kończy się znakiem nowej linii w stylu Windows, który, jak zakładam, jest do przyjęcia.
Testowe uruchomienie
Jak to działa
curl -I
wysyła żądanie HEAD, więc pobiera tylko nagłówki HTTP określonego adresu URL. W przypadku pierwszego przypadku testowego zostanie wydrukowanelub podobne. Dane wyjściowe są przesyłane potokowo do
grep -oehtt.*
, w którym są wyświetlane tylko części pasujące do określonego wyrażenia regularnego, tj. Ciąg htt, po którym następuje dowolna liczba znaków do końca wiersza.źródło
htt.*
więc zakłada, że w bieżącym katalogu nie ma żadnych pasujących plików. W przypadku większości wyrażeń regularnych zgodziłbym się na tej stronie, że możliwość dopasowania pliku jest na tyle mała, że jest w porządku, ale w tym przypadku sam tak nie uważam. Kod źródłowy jądra systemu Linux zawiera na przykład pliki o nazwachhtt.c
ihtt.h
. Zmiana go nagrep -oehtt.*
nie zwiększa liczby bajtów, ale znacznie zmniejsza prawdopodobieństwo wystąpienia problemów.-oehtt.*
jest to dobry sposób na zwiększenie jego niezawodności.PHP, 36 bajtów
Wprowadź za pomocą
https://
get_headers
25 bajtów, jeśli
Location:
na początku nie można ich usunąćjeśli Google zmieni nagłówek HTTP, tutaj jest bezpieczniejsza wersja
źródło
Python 2 , 43 bajty
Nie ma zależności i jest obecnie krótszy niż inna odpowiedź w języku Python. wzruszenie ramion Dane wejściowe muszą być zgodne
https?://goo\.gl/.*?/?
źródło
NodeJS, 60 bajtów
Dane wejściowe są w formacie
http://goo.gl/<id>
.źródło