Когда вы что-то ищете в Google , в верхней части страницы удобно появляется сообщение о чем-то вроде этого About 53,000,000 results (0.22 seconds)
. (Числа меняются в зависимости от того, что искали, конечно.)
В этом задании вы напишите программу, которая рисует логарифмический ASCII-график количества результатов, выданных Google при поиске всех непустых префиксов данной поисковой фразы .
Поиск фраза определяется как одна или более строк строчных буквенно - цифровых символов, разделенных одним пробелом друг от друга. В Regex поисковая фраза есть (?:[a-z0-9]+ )*[a-z0-9]+
.
Таким образом im ok
, r
и 1a 2
все поисковые фразы, но I'm OK
, R
, 1a 2
и , не являются.
(Ограничения на символы введены, потому что Google редко учитывает регистр или специальные символы. Экранирование не алфавитно-цифровых символов в URL-адресах также является проблемой.)
спекуляция
Ваша программа должна взять поисковую фразу и положительное число с плавающей запятой H либо из стандартного ввода, либо из командной строки. (Вы можете предположить, что они действительны, и это хорошо, если вам нужны кавычки или что-то вокруг поисковой фразы.)
В качестве рабочего примера предположим, что искомая фраза имеет значение 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
Если условие поиска не соответствует ни одному документу , поставьте 0 в Results
столбце.
Шаг 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
Этот график - конечный результат вашей программы и единственное, что нужно для вывода. Это должно пойти в стандартный вывод.
счет
Это Код-гольф, так что самая короткая программа в байтах побеждает.
Ноты
- Вы можете использовать сокращатели URL или другие инструменты поиска / API, если результаты будут такими же, как при поиске на https://www.google.com .
- Я знаю, что двойные кавычки - не верный способ исключить перенаправления типа «ты имел в виду…». Добавление
&nfpr=1
к URL тоже не всегда работает . Не беспокойтесь об этих неточностях. Просто найдитеAbout X results...
сообщение независимо от того, что всплывает, или установитеResults
0, если его нет. - Пустой столбец над любым пробелом в поисковой фразе на графике.
- График не должен быть шире или выше, чем нужно (например, с пробелами).
- Это нормально, если у вашей программы есть побочные эффекты, такие как открытие веб-браузера, поэтому загадочные html / js-страницы Google можно читать по мере их отображения.