সংক্ষিপ্ত গুগল লিঙ্কগুলি


10

চ্যালেঞ্জ

একটি বৈধ goo.glসংক্ষিপ্ত লিঙ্ক দেওয়া হয়েছে, মূল URL টি আউটপুট দেয়।

উদাহরণ

goo.gl/qIwi3Nকিছু দিতে হবে https://codegolf.stackexchange.com/। ইনপুট জন্য, আপনি https?://শুরুতে চয়ন করতে পারেন, আপনি www.আগে থাকা পছন্দ করতে পারেন goo.gl, এবং আপনি goo.glযদি কেবলমাত্র URL টি শেষ করতে চান তবে আপনি এটি থেকে মুক্তিও চয়ন করতে পারেন । ইনপুট এবং আউটপুট জন্য প্রান্তে একটি স্ল্যাশ optionচ্ছিক। সুতরাং, আপনার ইনপুটটি রেজেক্সের সাথে মিলবে (https?://)?(www\.)?(goo\.gl/)?[A-Za-z0-9]+/?। আউটপুট জন্য, আপনি আউটপুট আউটপুট হবে https?://কি না www., এবং আউটপুট একটি ট্রেলিং স্ল্যাশ আউটপুট বা না নির্বাচন করতে পারেন। তবে আপনাকে অবশ্যই আপনার I / O ফর্ম্যাটের সাথে সামঞ্জস্য রাখতে হবে

আমি বলব যে, আপনি সঙ্গে সামঞ্জস্যপূর্ণ হতে হবে না httpsবনাম httpআউটপুট (কিন্তু আপনি ইনপুট জন্য সামঞ্জস্যপূর্ণ হতে হবে), যতদিন আপনার সাথে থাকুক বা না থাকুক আপনি পুরো অন্তর্ভুক্ত সামঞ্জস্যপূর্ণ হয় https?://অংশ।

পরীক্ষার কেস

এগুলি ইনপুটটিতে কোনও https://, না www., কোনও পিছনে স্ল্যাশ দিয়ে লেখা হয় ; হ্যাঁ https://, না www., এবং হ্যাঁ আউটপুটটির পিছনে স্ল্যাশ।

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

অনুমিতি

  • আপনি ধরে নিতে পারেন যে সংক্ষিপ্ত লিঙ্কটি অন্য একটি সংক্ষিপ্ত লিঙ্কের দিকে ইঙ্গিত করবে না এবং গন্তব্য সাইটটি একটি স্থিতি কোড 2xxবা 4xx(কোনও পুনঃনির্দেশ) ফেরত দেবে।

আপনি এখানে যেতে পারেন এবং এর বিপরীত ক্রিয়াকলাপটি প্রয়োগ করতে একটি URL লিখতে পারেন: https://goo.gl/


@ হেলকাহোম্বা স্থির হয়েছে
পাভেল

3
একটি নেতৃত্ব আউটপুট আবহাওয়া বা নটর www.একটি পার্থক্য তোলে। এটি বেশিরভাগ ক্ষেত্রে একই সার্ভারটি উল্লেখ করে। উদাহরণস্বরূপ চেষ্টা করুন http://pks.mpg.deএবং http://www.pks.mpg.de। প্রথমটি সমাধান করা যায় না, তবে শেষেরটি পারে।
গোলার র‌্যামব্লার

@ স্টেফেনস সম্পন্ন, পরামর্শের জন্য ধন্যবাদ।
হাইপারনিউটারিনো

উত্তর:


11

সিজেম , 7 বাইট

lg'"/5=

টেস্ট রান

$ alias cjam
alias cjam='java -jar ~/.local/share/cjam-0.6.5.jar'
$ cjam unshorten.cjam <<< goo.gl/HaE8Au; echo
https://codegolf.stackexchange.com/
$ cjam unshorten.cjam <<< goo.gl/IfZMwe; echo
https://stackoverflow.com/
$ cjam unshorten.cjam <<< goo.gl/JUdmxL; echo
https://chat.stackexchange.com/rooms/240/the-nineteenth-byte

কিভাবে এটা কাজ করে

lgSTDIN থেকে একটি লাইন পড়ে এবং সেই URL এ GET অনুরোধ করে makes সংক্ষিপ্ত URL টি 301 পুনর্নির্দেশ জারি করে, যা সিজেএম অনুসরণ করে না। প্রথম পরীক্ষার ক্ষেত্রে এটি ধাক্কা দেয়

<HTML>
<HEAD>
<TITLE>Moved Permanently</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000">
<H1>Moved Permanently</H1>
The document has moved <A HREF="https://codegolf.stackexchange.com/">here</A>.
</BODY>
</HTML>

স্ট্যাকের উপর অবশেষে, '"/ডাবল উদ্ধৃতিতে বিভক্ত হয় এবং 5=ষষ্ঠ অংশ হয়। আউটপুট জড়িত।


1
আমি 05AB1E এবং পাইথ চেষ্টা করেছি, তারা দুজনেই 301 :( অনুসরণ করেছেন
এরিক দ্য আউটগল্ফার

3

পাইথন 2 + অনুরোধ, 44 বাইট

from requests import*
print get(input()).url

requests.get(URL)নির্দিষ্ট URL এ GET অনুরোধ জারি করে। প্রতিক্রিয়া অবজেক্টের urlক্ষেত্রে কোনও পুনর্নির্দেশের পরে চূড়ান্ত URL থাকে URL ইনপুটটির জন্য একটি প্রোটোকল (উদাহরণস্বরূপ http://) প্রয়োজন, এবং ইনপুটটি উদ্ধৃতিতে প্রত্যাশিত।


1
requestsঅন্তর্নির্মিত নয়, যাতে ভাষা শিরোনামে যুক্ত করা দরকার।
নম্বরমানিয়াক

1
lambda-3 বাইটের জন্য একটি এক্সপ্রেশন ব্যবহার করুন
ovs

1
@ সংখ্যামারাক ওফস, আপনি ঠিক বলেছেন, আমি অনুরোধ করতে এতটাই অভ্যস্ত হয়ে গেছি যে আমি ভুলে যাচ্ছি এটি একটি তৃতীয় পক্ষের lib।
মেগো

2

বাশ , 28 24 বাইট

curl -I $1|grep -oehtt.*

আউটপুটটি উইন্ডোজ-স্টাইলের নতুন লাইনের সাথে শেষ হয় যা আমি ধরে নিই যে এটি গ্রহণযোগ্য।

টেস্ট রান

$ bash unshorten.sh 2>&- goo.gl/HaE8Au
https://codegolf.stackexchange.com/
$ bash unshorten.sh 2>&- goo.gl/IfZMwe
https://stackoverflow.com/
$ bash unshorten.sh 2>&- goo.gl/JUdmxL
https://chat.stackexchange.com/rooms/240/the-nineteenth-byte

কিভাবে এটা কাজ করে

curl -Iএকটি হেড অনুরোধ প্রেরণ করে, সুতরাং এটি নির্দিষ্ট URL এর কেবলমাত্র HTTP শিরোনামগুলি নিয়ে আসে। প্রথম পরীক্ষার ক্ষেত্রে এটি প্রিন্ট করে

HTTP/1.1 301 Moved Permanently
Content-Type: text/html; charset=UTF-8
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: Mon, 01 Jan 1990 00:00:00 GMT
Date: Sat, 13 May 2017 05:51:48 GMT
Location: https://codegolf.stackexchange.com/
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
Server: GSE
Transfer-Encoding: chunked
Accept-Ranges: none
Vary: Accept-Encoding

অথবা সাদৃশ্যপূর্ণ. আউটপুটটি পাইপ করা হয়েছে grep -oehtt.*, যা কেবলমাত্র নির্দিষ্ট অংশগুলির সাথে মেলে এমন অংশগুলি প্রদর্শন করে, অর্থাৎ, রেখার শেষের অবধি যেকোন পরিমাণ অক্ষরের পরে স্ট্রিং htt স্ট্রিং করে।


কিভাবে কাজ করে?
অর্জুন

আমি একটি ব্যাখ্যা যুক্ত করেছি।
ডেনিস

হেই, ভাল করে বুঝিয়েছি! সেভাবে আমি শিগগিরই বাশ শিখব :-D

এটি ওয়াইল্ডকার্ড সম্প্রসারণ সম্পাদন করে htt.*তাই বর্তমান ডিরেক্টরিটিতে এটির সাথে মিলিত কোনও ফাইলই ধরে নেই। বেশিরভাগ রেজিক্সের জন্য, আমি এই সাইটে সম্মত হয়েছি যে কোনও ফাইলের মিল হওয়ার সম্ভাবনা যথেষ্ট কম যে এটি ঠিক আছে, তবে এই ক্ষেত্রে আমি নিজেও তাই মনে করি না। লিনাক্স কার্নেল সোর্স কোড নামে ফাইল অন্তর্ভুক্ত htt.cএবং htt.hউদাহরণস্বরূপ,। এটিতে পরিবর্তন করা grep -oehtt.*বাইট গণনা বৃদ্ধি করে না, তবে সমস্যা তৈরির সম্ভাবনা উল্লেখযোগ্যভাবে কম করে।
এইচডিভি

@hvd আমি সাধারণত ধরে নিই যে প্রোগ্রামটি অন্যথায় খালি ডিরেক্টরিতে চালিত হয়েছে তবে -oehtt.*এটি আরও নির্ভরযোগ্য করার একটি দুর্দান্ত উপায়।
ডেনিস

2

পিএইচপি, 36 বাইট

সাথে ইনপুট https://

<?=substr(get_headers($argn)[7],10);

get_headers

25 বাইটস Location: শুরুতে অবশ্যই অপসারণ করা উচিত নয়

<?=get_headers($argn)[7];

গুগল যদি HTTP শিরোনাম পরিবর্তন করে তবে এটি একটি নিরাপদ সংস্করণ

preg_match("#Location: \K.*#",join("\n",get_headers($argn)),$t);echo$t[0];

1

পাইথন 2 , 43 বাইট

কোনও নির্ভরতা নেই এবং বর্তমানে অন্যান্য পাইথন উত্তরের চেয়ে সংক্ষিপ্ত। শ্রাগ ইনপুট অবশ্যই মিলবেhttps?://goo\.gl/.*?/?

lambda s:urlopen(s).url
from urllib import*

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.