Googleで何かを検索すると、ページの上部近くにのようなメッセージが表示されますAbout 53,000,000 results (0.22 seconds)。(もちろん、何を検索したかによって数字が変わります。)
この課題では、特定の検索フレーズの空でないすべての接頭辞が検索されたときに、Googleから提供された結果数の対数 ASCIIグラフを描画するプログラムを作成します。
検索フレーズは、互いに1つのスペースで区切って、小文字の英数字の一つ以上の文字列として定義されています。正規表現では、検索フレーズは(?:[a-z0-9]+ )*[a-z0-9]+です。
ですからim ok、r、および1a 2すべての検索フレーズがありますが、I'm OK、R、1a 2、と、ではありません。
(Googleではほとんどの場合、大文字や特殊記号が考慮されないため、文字の制限が設けられています。URLで英数字以外の文字をエスケープするのも面倒です。)
スペック
プログラムは、stdinまたはコマンドラインから検索フレーズと正の浮動小数点数Hを取り込む必要があります。(あなたはそれらが有効であると仮定することができ、引用句または検索フレーズの周りに何かが必要な場合は問題ありません。)
実際の例として、検索フレーズがa carHで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値です。Hはまだ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
このグラフはプログラムの最終結果であり、出力する必要がある唯一のものです。それは標準出力に行く必要があります。
得点
これはcode-golfなので、バイト単位で最も短いプログラムが優先されます。
ノート
- 結果がhttps://www.google.comを検索した場合と同じである限り、URL短縮サービスまたは他の検索ツール/ APIを使用できます。
- 二重引用符は「もしかして...」リダイレクトを除外する確実な方法ではないことを知っています。
&nfpr=1URLへの追加も常に機能するとは限りません。これらの不正確さについて心配しないでください。About X results...何がポップアップしてもメッセージを探すか、何Resultsもない場合は0に設定します。 - グラフの検索フレーズのスペースの上に空の列があります。
- グラフは必要以上に広くしたり、高くしたりしないでください(たとえば、空白を含む)。
- あなたのプログラムがウェブブラウザを開くような副作用を持っているので問題はありません。そうすれば、謎めいたグーグルのhtml / jsページがレンダリングされたときに読むことができます。