Tantangan
Diberi goo.gl
tautan singkat yang valid , tampilkan URL asli.
Contoh
goo.gl/qIwi3N
akan memberikan sesuatu seperti https://codegolf.stackexchange.com/
. Untuk input, Anda dapat memilih untuk memiliki https?://
di awal, Anda dapat memilih untuk memiliki www.
sebelum goo.gl
, dan Anda juga dapat memilih untuk menyingkirkan goo.gl
jika Anda hanya menginginkan akhir dari URL. Garis miring pada bagian akhir adalah opsional untuk input dan output. Jadi, input Anda pada akhirnya akan cocok dengan regex (https?://)?(www\.)?(goo\.gl/)?[A-Za-z0-9]+/?
. Untuk output, Anda dapat memilih untuk output https?://
atau tidak, apakah atau tidak untuk output www.
, dan apakah atau tidak untuk menghasilkan garis miring. Namun, Anda harus konsisten dengan pemformatan I / O Anda .
Saya akan mengatakan bahwa Anda tidak harus konsisten dengan https
vs http
untuk output (tetapi Anda harus konsisten untuk input), selama Anda konsisten dengan apakah Anda menyertakan seluruh https?://
bagian atau tidak .
Uji Kasus
Ini ditulis tanpa https://
, tidak www.
, tanpa garis miring pada input; ya https://
, tidak www.
, dan ya membuntuti slash di output.
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
Asumsi
- Anda dapat mengasumsikan bahwa tautan yang diperpendek tidak akan mengarah ke tautan yang dipersingkat lainnya dan bahwa situs tujuan akan mengembalikan kode status
2xx
atau4xx
(tidak ada pengalihan).
Anda dapat pergi di sini dan memasukkan URL untuk menerapkan operasi terbalik ini: https://goo.gl/
www.
membuat perbedaan. Hanya saja dalam banyak kasus server yang sama itu merujuk. Coba misalnyahttp://pks.mpg.de
danhttp://www.pks.mpg.de
. Yang pertama tidak bisa diselesaikan, sementara yang kedua bisa.Jawaban:
CJam , 7 byte
Uji coba
Bagaimana itu bekerja
lg
membaca baris dari STDIN dan membuat permintaan GET ke URL itu. URL yang dipersingkat mengeluarkan pengalihan 301, yang tidak diikuti CJam. Untuk kasus uji pertama, ini mendorongdi tumpukan. Akhirnya,
'"/
bagi dengan tanda kutip ganda, dan5=
dapatkan potongan keenam. Output tersirat.sumber
Permintaan Python 2 +, 44 byte
requests.get(URL)
mengeluarkan permintaan GET ke URL yang ditentukan. Bidang objek responsurl
berisi URL akhir, setelah pengalihan. Protokol (misalnyahttp://
) diperlukan untuk input, dan input diharapkan dalam tanda kutip.sumber
requests
tidak built-in, sehingga perlu ditambahkan ke header bahasa.lambda
ekspresi untuk -3 byteBash ,
2824 byteOutput berakhir dengan baris gaya Windows, yang saya anggap dapat diterima.
Uji coba
Bagaimana itu bekerja
curl -I
mengirimkan permintaan HEAD, sehingga hanya mengambil header HTTP dari URL yang ditentukan. Untuk test case pertama, ia mencetakatau serupa. Keluaran disalurkan ke
grep -oehtt.*
, yang hanya menampilkan bagian-bagian yang cocok dengan regex yang ditentukan, yaitu string htt diikuti oleh jumlah karakter apa pun hingga akhir baris.sumber
htt.*
jadi anggap tidak ada file yang cocok dengan itu di direktori saat ini. Untuk sebagian besar regex, saya setuju di situs ini bahwa kemungkinan file yang cocok cukup kecil sehingga tidak apa-apa, tetapi dalam hal ini, saya tidak berpikir begitu. Kode sumber kernel Linux termasuk file bernamahtt.c
danhtt.h
, misalnya. Mengubahnya menjadigrep -oehtt.*
tidak meningkatkan jumlah byte, tetapi membuatnya lebih kecil kemungkinannya untuk menyebabkan masalah.-oehtt.*
merupakan cara yang bagus untuk membuatnya lebih dapat diandalkan.PHP, 36 Bytes
Masukan dengan
https://
get_headers
25 Bytes jika
Location:
pada awalnya tidak boleh dihapusjika Google mengubah HTTP Header di sini adalah versi yang lebih aman
sumber
Python 2 , 43 byte
Tidak memiliki dependensi dan saat ini lebih pendek dari jawaban Python lainnya. Input shrug harus cocok
https?://goo\.gl/.*?/?
sumber
NodeJS, 60 byte
Input dalam format
http://goo.gl/<id>
.sumber