গ্রাফ গুগল অনুসন্ধান ফলাফল


9

আপনি যখন গুগলে কোনও কিছুর সন্ধান করেন, এটি পৃষ্ঠার শীর্ষের নিকটে স্বাচ্ছন্দ্যে একটি বার্তা দেয় যা কিছু বলছে About 53,000,000 results (0.22 seconds)। (সংখ্যাগুলি অবশ্যই কী অনুসন্ধান করা হয়েছিল তার উপর নির্ভর করে change)

এই চ্যালেঞ্জটিতে আপনি একটি প্রোগ্রাম লিখবেন যা কোনও প্রদত্ত অনুসন্ধান-বাক্যাংশের সমস্ত খালি খালি উপসর্গ অনুসন্ধান করা হলে গুগল প্রদত্ত ফলাফলের সংখ্যার লোগারিথমিক এএসসিআইআই গ্রাফ আঁকবে

একজন সন্ধান-ফ্রেজ ছোট হাতের আলফানিউমেরিক অক্ষর এক বা একাধিক স্ট্রিং, একে অপরের থেকে এক স্থান দ্বারা পৃথক হিসাবে সংজ্ঞায়িত করা হয়। রেজেক্সে একটি অনুসন্ধান-বাক্যাংশ (?:[a-z0-9]+ )*[a-z0-9]+

সুতরাং im ok, rআর 1a 2সমস্ত অনুসন্ধান-বাক্যাংশ, কিন্তু I'm OK, R, 1a 2, এবং , হয় না।

(চরিত্রের নিষেধাজ্ঞাগুলি স্থানে রয়েছে কারণ গুগল খুব কম ক্ষেত্রে কেস বা বিশেষ চিহ্নগুলি গ্রহণ করে URL ইউআরএলগুলিতে অক্ষরবিহীন অক্ষরগুলি ত্যাগ করাও একটি ঝামেলা)

ফটকা খেলা

আপনার প্রোগ্রামটি অবশ্যই একটি অনুসন্ধান-বাক্যাংশ এবং স্টিডিন বা কমান্ড লাইন থেকে একটি ধনাত্মক ভাসমান পয়েন্ট সংখ্যা এইচ নিতে হবে। (আপনি ধরে নিতে পারেন সেগুলি বৈধ এবং আপনার যদি বাক্যাংশ বা অনুসন্ধান-বাক্যাংশের আশেপাশের কিছু প্রয়োজন হয় তবে এটি ঠিক আছে))

একটি কার্যকারী উদাহরণ হিসাবে ধরে নেওয়া যাক অনুসন্ধান বাক্যটি হ'ল a carএবং H = 0.75।

পদক্ষেপ 1:
আপনার অনুসন্ধান বাক্যাংশের খালি খালি উপসর্গগুলি সংগ্রহ করুন এবং সেগুলি ডাবল উদ্ধৃতিতে রাখুন । উদ্ধৃতিগুলি নিশ্চিত করে যে কোনও 'আপনার মানে ...' পুনর্নির্দেশগুলি এড়িয়ে সঠিক বাক্যাংশটি অনুসন্ধান করা হবে ।

এমন একটি স্পেসে শেষ হওয়া সমস্ত উপসর্গ বাদ দিন a[space]

Prefixes
"a"
"a c"
"a ca"
"a car"

পদক্ষেপ 2:
এই পদগুলির প্রতিটি যেমন https://www.google.com ব্যবহার করে প্রদর্শিত হবে ঠিক তেমন অনুসন্ধান করুন এবং ফলাফলের সংখ্যা নোট করুন।

Search Term    Message                                       Results
"a"            About 6,950,000,000 results (0.27 seconds)    6950000000
"a c"          About 861,000,000 results (0.27 seconds)      861000000 
"a ca"         About 2,990,000 results (0.30 seconds)        2990000
"a car"        About 53,900,000 results (0.39 seconds)       53900000

যদি অনুসন্ধান শব্দটি কোনও নথির সাথে মেলে না, Resultsকলামে একটি 0 রাখুন ।

পদক্ষেপ 3: প্রতিটি সারির জন্য
গণনা y = floor(H * log10(r + 1)), যেখানে r Resultsমান হয়। এইচটি এখানে এখনও 0.75।

Search Term    Results       y
"a"            6950000000    7
"a c"          861000000     6
"a ca"         2990000       4
"a car"        53900000      5

ধাপ 4:
সুসজ্জিত yউল্লম্ব বার (সংখ্যা |) প্রতিটি unquoted অনুসন্ধান শব্দ শেষ অক্ষর উপরে, স্পেস ব্যবহার খালি এলাকায় ভরাট বার গ্রাফ একটি সাজানোর মধ্যে।

|
| |
| | |
| |||
| |||
| |||
| |||
a car

এই গ্রাফটি আপনার প্রোগ্রামের চূড়ান্ত ফলাফল এবং কেবলমাত্র আউটপুট দেওয়ার প্রয়োজন। এটা stdout যেতে হবে।

স্কোরিং

এই , তাই বাইটের মধ্যে সংক্ষিপ্ততম প্রোগ্রামটি জিতল।

মন্তব্য

  • আপনি URL শর্টনার বা অন্যান্য অনুসন্ধান সরঞ্জাম / API গুলি ব্যবহার করতে পারেন যতক্ষণ না ফলাফলগুলি https://www.google.com অনুসন্ধান করার মতো হবে ।
  • আমি জানি যে ডাবল উক্তিগুলি "আপনার অর্থ ..." পুনর্নির্দেশগুলি বাদ দেওয়ার কোনও নিশ্চিত উপায় নয়&nfpr=1ইউআরএল যুক্ত করা সর্বদা হয় না । এই ভুলগুলি সম্পর্কে চিন্তা করবেন না। About X results...পপ আপ যাই হোক না কেন কেবল বার্তাটি অনুসন্ধান করুন বা Resultsযদি কিছু না থাকে তবে 0 তে সেট করুন ।
  • গ্রাফের অনুসন্ধান-বাক্যাংশের যে কোনও জায়গার উপরে একটি খালি কলাম রয়েছে।
  • গ্রাফটি যতটা প্রয়োজন তার চেয়ে প্রশস্ত বা লম্বা হওয়া উচিত নয় (যেমন শ্বেত স্পেস সহ)।
  • ঠিক আছে যদি আপনার প্রোগ্রামটিতে কোনও ওয়েব ব্রাউজার খোলার মতো পার্শ্ব প্রতিক্রিয়া থাকে যাতে গুপ্ত গুগল এইচটিএমএল / জেএস পৃষ্ঠাগুলি রেন্ডার করার সাথে সাথে সেগুলি পড়তে পারে।

আমি জানি এটি শূন্য ফলাফল পাওয়ার জন্য সাধারণ নয় , তবে আপনি যখন "এক্স এক্স ফলাফল সম্পর্কে ..." পাবেন না। আমি ধরে নিলাম যে এটি 0 বার হিসাবে সনাক্ত করা উচিত এবং দেখানো উচিত?
জিওবিটস

@ জিওবিটস হ্যাঁ, 0 টি ফলাফল অনুমান করুন।
ক্যালভিনের

1
ঠিক তাই আপনি জানেন - গুগল হাতুড়ি করবেন না - আপনি যদি খুব বেশি / খুব ঘন ঘন আঘাত করেন তবে এটি ক্যাপচা দিয়ে প্রতিক্রিয়া জানাবে, যা আপনার প্রোগ্রামটি ভেঙে দিতে পারে
SeanC

উত্তর:


4

রুবি, 316 295 বাইট

require 'open-uri'
s,h=*$*
r=[]
s.size.times{|i|r<<(s[i]==' '?'':?|*(h.to_f*Math.log10((URI.parse("http://google.com/search?q=#{URI::encode ?"+s[0..i]+?"}").read[/About [\d,]+ results/]||?0).gsub(/\D/,'').to_i+1)).floor)+s[i]}
puts r.map{|l|l.rjust(r.map(&:size).max).chars}.transpose.map &:join

দুর্ভাগ্যক্রমে, অনুরোধগুলি কেবলমাত্র আমি যে অনলাইন অনলাইন পরীক্ষকটি ব্যবহার করছিলাম সেগুলিতে কাজ করা বন্ধ করে দিয়েছিল, তাই আজ রাত্রে বা আগামীকাল আমাকে আরও নীচে গল্ফ করতে হবে।

ব্যাখ্যা: আমি এআরজিভি এর মাধ্যমে ইনপুট নিচ্ছি। তারপরে আমি কেবলমাত্র প্রতিটি সাবস্ট্রিংয়ের জন্য একটি অনুরোধ প্রেরণ করছি যা কোনও স্থানের মধ্যে শেষ হয় না, রেজেজের মাধ্যমে ফলাফলগুলি সন্ধান করুন (এবং 0পূর্বসূরীর সাথে মিলে না গেলে ডিফল্ট ) এবং তার পরে অনুভূমিক বারগুলির সাহায্যে হিস্টোগ্রাম তৈরি করুন। শেষে, আমি সমস্ত লাইন বিপরীত করছি এবং উল্লম্ব হিস্টোগ্রাম তৈরি করতে তাদের ট্রান্সপোস করছি।

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