Wenn Sie bei Google nach etwas suchen, wird am oberen Rand der Seite eine Meldung angezeigt, die etwa Folgendes enthält About 53,000,000 results (0.22 seconds). (Die Zahlen ändern sich natürlich je nachdem, wonach gesucht wurde.)
In dieser Herausforderung schreiben Sie ein Programm, das ein logarithmisches ASCII-Diagramm der Anzahl der von Google angegebenen Ergebnisse zeichnet, wenn alle nicht leeren Präfixe eines bestimmten Suchbegriffs durchsucht werden.
Ein Suchbegriff ist definiert als eine oder mehrere Zeichenfolgen von alphanumerischen Kleinbuchstaben, die durch ein Leerzeichen voneinander getrennt sind. In Regex ist ein Suchbegriff (?:[a-z0-9]+ )*[a-z0-9]+.
So im ok, rund 1a 2sind alle Such-Sätze, sondern I'm OK, R, 1a 2, und , ist es nicht.
(Die Zeichenbeschränkungen sind vorhanden, da Google Groß- und Kleinschreibung oder spezielle Symbole nur selten berücksichtigt. Das Ausweichen von nicht alphanumerischen Zeichen in URLs ist ebenfalls problematisch.)
Spec
Ihr Programm muss einen Suchbegriff und eine positive Gleitkommazahl H entweder von stdin oder von der Befehlszeile aufnehmen. (Sie können davon ausgehen, dass sie gültig sind, und es ist in Ordnung, wenn Sie Anführungszeichen oder etwas um den Suchbegriff herum benötigen.)
Als Arbeitsbeispiel nehmen wir an, dass der Suchbegriff a carH = 0,75 ist.
Schritt 1:
Sammeln Sie die nicht leeren Präfixe Ihres Suchbegriffs und setzen Sie sie in doppelte Anführungszeichen . Die Anführungszeichen stellen sicher, dass nach der genauen Phrase gesucht wird, und vermeiden Umleitungen , die Sie gemeint haben .
Schließen Sie alle Präfixe aus, die in einem Leerzeichen wie z a[space].
Prefixes
"a"
"a c"
"a ca"
"a car"
Schritt 2:
Suchen Sie jeden dieser Begriffe mithilfe von https://www.google.com genau so, wie er angezeigt wird , und notieren Sie die Anzahl der zurückgegebenen Ergebnisse.
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
Wenn der Suchbegriff nicht mit Dokumenten übereinstimmt , geben Sie eine 0 in die ResultsSpalte ein.
Schritt 3:
Berechnen Sie y = floor(H * log10(r + 1))für jede Zeile, wobei r der ResultsWert ist. H ist hier immer noch 0,75.
Search Term Results y
"a" 6950000000 7
"a c" 861000000 6
"a ca" 2990000 4
"a car" 53900000 5
Schritt 4:
Ordnen Sie die yAnzahl der vertikalen Balken ( |) über dem letzten Zeichen jedes nicht zitierten Suchbegriffs an, und verwenden Sie Leerzeichen, um leere Bereiche in einer Art Balkendiagramm zu füllen.
|
| |
| | |
| |||
| |||
| |||
| |||
a car
Dieses Diagramm ist das Endergebnis Ihres Programms und das einzige, was es ausgeben muss. Es sollte zu stdout gehen.
Wertung
Dies ist Code-Golf , also gewinnt das kürzeste Programm in Bytes .
Anmerkungen
- Sie können URL-Shortener oder andere Suchwerkzeuge / APIs verwenden, sofern die Ergebnisse mit denen der Suche unter https://www.google.com übereinstimmen .
- Ich weiß, dass doppelte Anführungszeichen kein todsicherer Weg sind , um Weiterleitungen von "Meinten Sie ..." auszuschließen. Das Hinzufügen
&nfpr=1zur URL funktioniert auch nicht immer . Mach dir keine Sorgen über diese Ungenauigkeiten. Suchen Sie einfach nach derAbout X results...Nachricht, egal was auftaucht, oder setzen Sie sieResultsauf 0, wenn keine vorhanden ist. - Über jedem Leerzeichen in der Suchphrase im Diagramm befindet sich eine leere Spalte.
- Das Diagramm sollte nicht breiter oder höher sein als es sein muss (z. B. mit Leerzeichen).
- Es ist in Ordnung, wenn Ihr Programm Nebenwirkungen wie das Öffnen eines Webbrowsers hat, damit die kryptischen Google HTML / JS-Seiten beim Rendern gelesen werden können.