গুগল স্বতঃসিদ্ধ মজা


16

আপনার কাজটি এমন একটি প্রোগ্রাম তৈরি করা যা কোনও ইনপুট স্ট্রিং দেওয়া হলে সেই অনুসন্ধানের জন্য প্রথম গুগল স্ব-পরিপূর্ণ ফলাফল আউটপুট দেয়। ইনপুট / আউটপুট ফর্ম্যাট আপনার উপর নির্ভর করে।

বিধি

  1. আপনার প্রোগ্রামটি অবশ্যই 1 টি ইনপুট, একটি স্ট্রিং নেবে এবং শীর্ষস্থানীয় গুগল স্বতঃপূরণ / স্বতঃপূরণ পরামর্শের ফলাফল আউটপুট নেয়। ইনপুট / আউটপুট ফর্ম্যাট আপনার উপর নির্ভর করে। আপনার আই / ও ফর্ম্যাটটি কী তা উল্লেখ করার জন্য অবশ্যই নিশ্চিত হন।
  2. স্পষ্টতই, ইন্টারনেট অ্যাক্সেস অনুমোদিত।
  3. ইউআরএল সংক্ষিপ্তকরণগুলি (যেমন বিট.লাই, টিনিআরএল, ইত্যাদি) কঠোরভাবে অনুমোদিত নয় । এই URL টি থেকে আপনার স্ব-অসম্পূর্ণ ফলাফলগুলি আনতে হবে: http://suggestqueries.google.com/complete/search?client=your_browser&q=your_query বা http://google.com/complete/search?client=your_browser&q=your_query । আপনি যে কোনও ব্রাউজারের নাম (বা স্ট্রিং, সেটির জন্য) ধরে নিতে পারবেন client। ইন প্রোগ্রাম আমি লিখেছি , আমি ক্রোম অনুমান। যে কোনও ব্রাউজারের নাম বা স্ট্রিংয়ের কাজ করা উচিত। আপনি যে কোনও বিকল্পকে ওয়েবপৃষ্ঠায় পাস করার অনুমতি দেওয়া হচ্ছে যতক্ষণ আপনি http://suggestqueries.google.com/complete/search এর কিছু বৈকল্পিক ব্যবহার করছেন ।
  4. আপনার প্রোগ্রামটি কীভাবে কাজ করে তার একটি ব্যাখ্যা সরবরাহ করুন। এটি বাধ্যতামূলক নয়, তবে আমি দৃ strongly়ভাবে এটির পরামর্শ দিচ্ছি।
  5. সমস্ত স্ট্যান্ডার্ড লুফোলগুলি কঠোরভাবে নিষিদ্ধ

পরীক্ষার কেস

এগুলি অবিচ্ছিন্নভাবে পরিবর্তিত হচ্ছে, সুতরাং এই পোস্টগুলি সম্পাদনা করুন যদি এগুলি পুরানো হয়ে যায়।

'how to'
  => 'how to make slime'
'code golf'
  => 'code golf languages'
'you'
  => 'youtube'
'g'
  => 'google' (why would you google 'google'?)

এটি , তাই সংক্ষিপ্ততম কোড জিততে পারে এবং সেরা প্রোগ্রামারটি উন্নতি করতে পারে ...


3
আমি একটি ক্লায়েন্টের নামটিকে ন্যায্য করে
বিটা ডিকায়

7
কঠোর ইউআরএল কেন? যতক্ষণ পর্যন্ত প্রস্তাবনা জিওআর.ই.এম. ব্যবহার করা হয় ততক্ষণ কোনও ইউআরএল সংক্ষিপ্তকরণ ছাড়া আমি কোনও সমস্যা দেখি না।
ডেনিস

বিশেষত, যদি আমরা ব্যবহার করতে পারি তবে আমাদের output=toolbarকোনও ক্লায়েন্ট নির্দিষ্ট করতে হবে না।
ডেনিস

2
@ mınxomaτ তবে কেন নয় https -> http(1 বাইট www.সংরক্ষণ করুন), google.com -> google.us( 4 বাইট সংরক্ষণ করুন), (1 বাইট সংরক্ষণ করুন) বা এমনকি google.com -> g.cn(6 বাইট সংরক্ষণ করুন; এটি এখনও কেন কাজ করে তা সম্পর্কে নিশ্চিত নই, তবে মনে হয় এটি এখনও 20170424 এ কাজ করছে)
tsh

3
বিভিন্ন ব্যবহারকারী এবং অঞ্চলগুলির জন্য পরামর্শগুলি কী আলাদা নয়? আমি মনে করি না স্ট্যান্ডার্ড পরীক্ষার কেসগুলি সত্যই এর জন্য কাজ করে।
মিঃজান্ডার

উত্তর:


8

জেডএস + কোর্টিলস + ডাব্লু 3 এম, 88 71 68 বাইট

echo `w3m "google.com/complete/search?client=gma&q=$*"|cut -d\" -f4`

বাশ থেকে জেডে স্যুইচ করা 3 বাইট সংরক্ষণ করে।

সংক্ষিপ্ত ইউআরএলের জন্য @ ফ্যাটমারলিনকে ধন্যবাদ, 17 বাইট সংরক্ষণ!

নমুনা রান

$ zsh complete.sh how to
how to make slime
$ zsh complete.sh dont you
don't you forget about me
$ zsh complete.sh don\'t you
don't you worry child

3
সবকিছুর মধ্যে, "স্লাইম তৈরি করা" কেন প্রথম পরামর্শ? আমরা কথা বলতে বলতে কত লোক সেখানে চেরা তৈরি করছে?
মাইল্ডলি মিল্কিটোস্ট

27
কোন সুত্র নেই. কিছুক্ষণের জন্য প্রতিভাশালী শিশুদের খাওয়ার মাধ্যমে কীভাবে আপনার আইকিউ বাড়ানো যায়, তাই আমি এটির উন্নতি বিবেচনা করব।
ডেনিস

ডাং, আমি ডাব্লু 3 প্রেম করি। এটি আমাকে কোনও বিঘ্ন ছাড়াই ব্রাউজ করতে দেয় এবং এটি পুরোপুরি বেশ দুর্দান্ত।
ckjbgames 0

1
@ মিস্তাহা ফিজিন্স তার জন্য দোষী মাইনক্রাফ্ট
জ্যাকস্টেইম

@MistahFiggins হয়তো তারা সব শুধু চাই make(1) পাঁক
আর্মিনিয়াস

12

ভিম 8 + আনিম্পায়ার্ড.ভিম , 93 89 85 70 73 71 বাইট

  • Tsh ধন্যবাদ -4 বাইট
  • -2 বাইট আইয়ান এমনেসকে ধন্যবাদ
  • -2 বাইটস ফ্যাটালমারলিনকে ধন্যবাদ
  • -1 বাইট ধন্যবাদ tsh / ckjbgames
:s/ /+/g
D:e http://google.us/complete/search?client=gma&q="
d3f";D]yy

বোনাস হিসাবে, শেষ বাইটগুলি দেখে মনে হচ্ছে তারা আপনার দিকে ঝুঁকছে কারণ ;Dযেহেতু এটিতে মুদ্রনবিহীন অক্ষর রয়েছে, ব্যাখ্যাটিতে বিকল্পগুলি রয়েছে (এবং আমি ইউআরএল-এর প্রাক-ক্যোরিস্ট্রিং অংশটি প্রতিস্থাপকের জন্য প্রতিস্থাপন করেছি [url]):

:s/ /+/g<CR>D:e [url]?client=gma&q=<C-R>"<CR>d3f";D]yy
:s/ /+/g<CR>                                           " Replace spaces with +
            D                                          " Delete and yank result
             :e                                        " Type :e ('edit' command) and a space
                [url]?client=gma&q=                    " Type the url, except the query
                                   <C-R>"              " Paste from the default register
                                         <CR>          " Execute the command, which opens the response
                                                       "   in a new buffer
                                             d3f"      " Delete through the first three quotation marks
                                                       "   This deletes everything before the suggestion
                                                 ;     " Repeat motion; this jumps to the next \"
                                                  D    " Delete everything from there, leaving only the suggestion
                                                   ]yy " unimpaired.vim C string unescape to handle escaped '

দৌড়ানো যতদূর যায়, যদি আপনি এটি নামক কোনও ফাইলে সংরক্ষণ করেন scriptএবং vim -s script input.txtকমপক্ষে ম্যাকোস-এ চালনা করেন তবে এটি দুর্দান্ত কাজ করে। আপনি যুক্ত করলে এটি কাজ করে না -u NONE, তবে আমার .vimrcখালি থাকলে এটি ঠিক কাজ করে । আমি ধরে নিয়েছি এটি .vimrcইউআরএল স্টাফকে কাজ করতে সিস্টেম থেকে কিছু ব্যবহার করছে । এর অর্থ অবশ্য, এটি ভি তে কাজ করে না, তাই কোনও টিআইও লিঙ্ক নেই।

আরও কিছু পরীক্ষার মামলা:

'what' => 'whataburger'
'what ' => 'what time is it' (Seriously? People Google that?)

আমার সত্যিকার অর্থে যা দরকার তা হ'ল এটির ফাঁকা জায়গাগুলি সহ একটি URL খোলার। এগুলিকে +প্রথম দিয়ে প্রতিস্থাপন করা কেবলমাত্র অনেকগুলি বাইট!


1
প্লাস চিহ্ন দ্বারা স্থান প্রতিস্থাপন করা উচিত +?
tsh

1
আপনি ঠিক বলেছেন! এখন কেউ আমাকে বলুন আমি কীভাবে 2 বাইট সংরক্ষণ করতে পারি এবং ডেনিসকে পরাজিত করতে পারি :)
ব্রায়ান ম্যাকচ্যাচন

কাজ করতে netrw জন্য আপনার যা দরকারfiletype plugin on
tbodt

1
আপনি <সিআর> করে সন্নিবেশ / কমান্ড মোডে "রেজিস্টার (ডিফল্ট) টি আটকাতে পারবেন। :r [url]?client=opera&q=^R"পরিবর্তে না করে আপনি কয়েকটি বাইট শেভ করতে পারেন q:ir [url]?client=opera&q=<esc>p^Rআপনি <সিআর> টিপে যখন কীগুলি ^এবং Rএকসাথে চাপেন না তখন প্রকৃত বাইটটি প্রেরণ করা হয়, সুতরাং এটি কেবল একটি বাইট হিসাবে গণ্য হয়।
ইয়ান এমনেস

1
আমি যখন ৮৮ টি পেয়েছি বাইটগুলি গণনা করি Also এছাড়াও আপনি ইউআরএলটি http://google.com/complete/search?client=hp&q=your_query( client=gma=> সাধারণ জেএসএন এবং ছোট টেক্সট) এ পরিবর্তন করে বাইটগুলি সংরক্ষণ করতে পারেন ।
ফ্যাটালমার্লিন


5

জাভাস্ক্রিপ্ট, 109 বাইট

q=>fetch("//suggestqueries.google.com/complete/search?client=chrome&q="+q).then(r=>r.json()).then(r=>r[1][0])

Promise, আপনি এটা ভালবাসা করতে হবে, কিন্তু মানুষ এটা শব্দচক্র! এই উত্তরটি ব্যবহার করে fetch(), আধুনিক ব্রাউজারগুলিতে একটি প্রতিশ্রুতি ভিত্তিক আনতে হবে এপিআই। কলব্যাকের মতো শুরুতে অ্যাসিঙ্ক ক্রিয়াকলাপের জন্য হ্যান্ডলার স্থাপনের মাধ্যমে কাজের প্রতিশ্রুতি দেয়, তবে আরও ভাল। .then()একটি ফাংশন যা ASYNC কর্মের ফলাফল নিয়ে বলা হবে লাগে। পাঠ্য অ্যারেটিকে ম্যানিপুলেবল ভেরিয়েবল, দ্বিতীয়টিতে রূপান্তর করতে প্রতিক্রিয়া পদ্ধতি .then(r=>r.json())ব্যবহার করে.json().then() প্রথম প্রতিক্রিয়াটি কেবল টানছে।

ব্যবহার:

S = q=>fetch("//suggestqueries.google.com/complete/search?client=chrome&q="+q).then(r=>r.json()).then(r=>r[1][0])

S("node.js").then(console.log); // Prints the result to the debug console

2
.then(r=>r.json()).then(r=>r[1][0])-> .then(r=>r.json()[1][0])11 টি অক্ষর কম উপভোগ করুন ;-)
স্টিফান বিজজিটার

আমি ফায়ারফক্স 52 এবং ক্রোম 57 এ এই পৃষ্ঠায়, গুগলের হোমপেজ এবং প্রায়: ফাঁকা চেষ্টা করেছি এবং আমি কেবল সিওআরএস ত্রুটি পেতে থাকি। আপনি কি সফলভাবে কাজ করতে পেরেছেন?
ETH প্রোডাকশনগুলি

@ ইথ প্রডাকশনগুলি হ্যাঁ, সিওআরএসের সমস্যা রয়েছে, আপনাকে অবশ্যই ডোমেন প্রস্তাবনায়েস.কম.কম এ
মেয়রমন্টি

@ স্টাফান বিজজিটার .json()কোনও কারণে প্রতিশ্রুতি দিয়েছে, এটি অ্যাসিঙ্ক , কোনও কারণে
মেয়রমন্টি

প্রকৃতপক্ষে এটি সেখানে কাজ করে, ধন্যবাদ!
ইটিএইচ প্রডাকশনগুলি

1

সি #, 192 112 111 বাইট

@ লেথলকোডারকে ধন্যবাদ 80 বাইট সংরক্ষণ করা। আমার কোডটি পুনরায় ফর্ম্যাট করার জন্য ধন্যবাদ, আমি জানতাম না এটি কেবল আশেপাশের ক্লাস এবং মেথড বডি ছেড়ে দেওয়ার অনুমতি দেওয়া হয়েছিল :)

প্রতিস্থাপন gmaকরে আরেকটি বাইট সংরক্ষণ করা হয়েছে hp, কারণ এটি পার্সিংয়ের পক্ষে গুরুত্বপূর্ণ নয় এবং প্রতিক্রিয়া সংস্থার সামনে কিছুটা গীব্রিত রয়েছে।

আমি litterally এপিআই নরপশু-বাধ্য এটি gmaএবং hp

s=>new System.Net.WebClient().DownloadString("http://google.com/complete/search?client=hp&q="+s).Split('"')[3];

1

গ্রোভি, 122 বাইট

{Eval.me(new URL("http://suggestqueries.google.com/complete/search?client=chrome&q="+it).text.split(",\\{")[0]+"]")[1][0]}

মূলত:

  1. প্রান্তটি থেকে পাঠ্যটি পান।

  2. বন্ধনীর সাহায্যে অংশটি অপসারণ করুন, এটি বৈধ সিনট্যাক্স নয়।

  3. বাকি বিটটি একটি গ্রোভি অ্যারে হিসাবে পার্স করুন।

  4. ফলাফল অ্যারের দ্বিতীয় উপাদানটি ধরুন।

এখানে চিত্র বর্ণনা লিখুন


1

পাওয়ারশেল, 133 115 বাইট

([net.webclient]::new().downloadstring("http://google.com/complete/search?client=gma&q=$_")|convertfrom-json)[1][0]

নমুনা রান

উইন্ডোজ সিএমডি কমান্ড লাইন:

powershell.exe -c "'code golf l'|%{([net.webclient]::new().downloadstring(""""http://google.com/complete/search?client=gma&q=$_"""")|convertfrom-json)[1][0]}"

পাওয়ারশেল কনসোল:

'code golf l'|%{([net.webclient]::new().downloadstring("http://google.com/complete/search?client=gma&q=$_")|convertfrom-json)[1][0]}

1

আর, 111 বাইট

দীর্ঘ সময় আমি এখানে এসেছি কিন্তু এটিকে শট দিচ্ছি:

jsonlite::fromJSON(readLines(url(paste0("http://google.com/complete/search?client=gma&q=",scan(,"")))))[[2]][1]

প্যাকেজটি ব্যবহার করে jsonliteস্ট্রিং থেকে স্ট্রিংটিকে readLines()তালিকার কোনও বস্তুতে রূপান্তর করতে ।

পরবর্তীকালে দ্বিতীয় উপাদানটি বের করুন, উদাহরণস্বরূপ (একটি সতর্কতা দেয় যা আমাদের যত্ন নিতে হবে না):

> jsonlite::fromJSON(readLines(url(paste0("http://google.com/complete/search?client=gma&q=",scan(,"")))))[[2]][1]
1: "how to"
2: 
    Read 1 item
[[1]]
[1] "how to make slime"

Warning message:
    In readLines(url(paste0("http://google.com/complete/search?client=gma&q=",  :
                                incomplete final line found on 'http://google.com/complete/search?client=gma&q=how to'

0

সি #, 127 বাইট

s=>new System.Net.WebClient().DownloadString("http://suggestqueries.google.com/complete/search?client=gma&q="+s).Split('"')[3];

সম্পূর্ণ এবং ফর্ম্যাট সংস্করণ:

static void Main()
{
    System.Func<string, string> f = s =>
        new System.Net.WebClient()
                      .DownloadString("http://suggestqueries.google.com/complete/search?client=gma&q="+s)
                      .Split('"')[3];

    System.Console.WriteLine(f("you"));
    System.Console.ReadLine();
}

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