ग्राफ़ Google खोज परिणाम


9

जब आप Google पर कुछ खोजते हैं , तो यह सुविधाजनक रूप से पृष्ठ के शीर्ष के पास एक संदेश देता है, जैसे कि कुछ About 53,000,000 results (0.22 seconds)। (पाठ्यक्रम की खोज के आधार पर संख्या बदल जाती है।)

इस चुनौती में आप एक प्रोग्राम लिखेंगे जो Google द्वारा दिए गए परिणामों की संख्या का एक लघुगणक ASCII ग्राफ खींचता है जब किसी दिए गए खोज-वाक्यांश के सभी गैर-खाली उपसर्ग खोजे जाते हैं।

एक खोज-वाक्यांश को एक-दूसरे से एक स्थान द्वारा अलग किए गए लोअरकेस अल्फ़ान्यूमेरिक वर्णों के एक या अधिक तार के रूप में परिभाषित किया गया है। रेगेक्स में एक खोज-वाक्यांश है (?:[a-z0-9]+ )*[a-z0-9]+

तो im ok, rहै, और 1a 2सभी खोज-वाक्यांशों रहे हैं, लेकिन I'm OK, R, 1a 2, और , नहीं कर रहे हैं।

(वर्ण प्रतिबंध लागू हैं क्योंकि Google शायद ही कभी मामले या विशेष प्रतीकों को ध्यान में रखता है। 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|

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

यह ग्राफ़ आपके प्रोग्राम का अंतिम परिणाम है और केवल उसी चीज़ को आउटपुट करने की आवश्यकता है। इसे स्टडआउट जाना चाहिए।

स्कोरिंग

ये है , इसलिए बाइट्स में सबसे छोटा कार्यक्रम जीत जाता है।

टिप्पणियाँ

  • जब तक परिणाम https://www.google.com की खोज के समान नहीं होंगे तब तक आप URL शॉर्टर्स या अन्य खोज उपकरण / API का उपयोग कर सकते हैं ।
  • मुझे पता है कि दोहरे उद्धरण "बाहर निकालने का एक निश्चित तरीका नहीं है " क्या आपका मतलब था ... "पुनर्निर्देशन। &nfpr=1URL को जोड़ना हमेशा काम नहीं करता है । इन अशुद्धियों के बारे में चिंता मत करो। बस About X results...संदेश देखें कि कोई बात नहीं क्या है, या Resultsअगर कोई नहीं है तो 0 पर सेट करें।
  • ग्राफ़ में खोज-वाक्यांश में किसी भी स्थान के ऊपर एक खाली स्तंभ है।
  • ग्राफ व्यापक या लंबा नहीं होना चाहिए, जैसे कि यह होना चाहिए (जैसे कि व्हाट्सएप के साथ)।
  • यह ठीक है अगर आपके प्रोग्राम में वेब ब्राउज़र खोलने के साइड इफेक्ट्स हैं, तो क्रिप्टिक Google HTML / js पेज पढ़े जा सकते हैं क्योंकि वे प्रदान किए जाते हैं।

मुझे पता है कि यह शून्य परिणाम प्राप्त करने के लिए विशिष्ट नहीं है , लेकिन जब आप करते हैं तो कोई "एक्स परिणाम के बारे में नहीं है ..."। मुझे लगता है कि पता लगाया जाना चाहिए और 0 बार के रूप में दिखाया जाना चाहिए?
जियोबिट्स

@ जीबिट्स हां, मान लें 0 परिणाम।
केल्विन के शौक

1
बस इतना है कि आप जानते हैं - गूगल को हथौड़ा मत करो - यह एक कैप्चा के साथ जवाब देगा यदि आप इसे बहुत मुश्किल से मारते हैं / बहुत बार, जो आपके कार्यक्रम को तोड़ सकता है
शॉन सीप

जवाबों:


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

दुर्भाग्य से, अनुरोधों ने मेरे द्वारा उपयोग किए जा रहे ऑनलाइन परीक्षक पर काम करना बंद कर दिया है, इसलिए मुझे आज रात या कल इसे नीचे करने की आवश्यकता है।

स्पष्टीकरण: मैं ARGV के माध्यम से इनपुट ले रहा हूं। फिर मैं सिर्फ प्रत्येक स्थानापन्न के लिए एक अनुरोध भेज रहा हूं जो एक स्थान पर समाप्त नहीं होता है, रिजेक्स के माध्यम से परिणाम ढूंढें (और 0यदि रेगेक्स मेल नहीं खाता है तो डिफ़ॉल्ट है ), और फिर क्षैतिज सलाखों के साथ हिस्टोग्राम बनाएं। अंत में, मैं सभी पंक्तियों को उल्टा कर रहा हूं और ऊर्ध्वाधर हिस्टोग्राम बनाने के लिए उनका प्रत्यारोपण कर रहा हूं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.