Ваша задача - создать программу, которая с учетом введенной строки выведет первый результат автозаполнения Google для этого поиска. Формат ввода / вывода зависит от вас.
правила
- Ваша программа должна взять 1 ввод, строку и вывести верхний результат предложений автозаполнения / автозаполнения Google. Формат ввода / вывода зависит от вас. Просто обязательно укажите, какой у вас формат ввода / вывода.
- Очевидно, что доступ в Интернет разрешен.
- Сокращения URL (например, bit.ly, TinyURL и т. Д.) Строго запрещены . Вы должны получить результаты автозаполнения с этого URL: http://suggestqueries.google.com/complete/search?client=your_browser&q=your_query или http://google.com/complete/search?client=your_browser&q=your_query . Вам разрешено принимать любое имя браузера (или строку, если на то пошло) для
client
. В программе, которую я написал , я предполагаю, что Chrome. Любое имя браузера или строка должны работать. Вам разрешается передавать любые параметры на веб-страницу, если вы используете какой-либо вариант http://suggestqueries.google.com/complete/search . - Пожалуйста, объясните, как работает ваша программа. Это не обязательно, но я настоятельно советую это.
- Все стандартные лазейки строго запрещены .
Тестовые случаи
Они постоянно меняются, поэтому отредактируйте этот пост, если он устарел.
'how to'
=> 'how to make slime'
'code golf'
=> 'code golf languages'
'you'
=> 'youtube'
'g'
=> 'google' (why would you google 'google'?)
Это код-гольф , так что может победить самый короткий код и лучший программист ...
output=toolbar
, нам не нужно указывать клиента вообще.https -> http
(сохранить 1 байт), удалитьwww.
(сохранить 4 байта),google.com -> google.us
(сохранить 1 байт) или дажеgoogle.com -> g.cn
(сохранить 6 байт; я не уверен, почему это все еще работает, но кажется, что оно все еще работает в 20170424)Ответы:
Zsh + coreutils + w3m,
887168 байтПереключение с Bash на Zsh позволило сэкономить 3 байта.
Спасибо @FatalMerlin за более короткий URL, сэкономив 17 байт!
Пробный прогон
источник
make(1)
слизи .Vim 8 + unimpaired.vim ,
938985707371 байтВ качестве бонуса последние байты выглядят так, будто они подмигивают вам.
;D
Так как в нем содержатся непечатаемые символы, объяснение содержит подстановки ([url]
для краткости я заменил часть URL-адреса, предшествующую строке запроса , для краткости):Что касается запуска, то он работает нормально, если вы сохраните его в файле с именем
script
иvim -s script input.txt
по крайней мере на MacOS. Это не сработает, если вы добавите-u NONE
, но работает нормально, если my.vimrc
пусто. Я предполагаю, что он использует что-то из системы,.vimrc
чтобы заставить вещи URL работать. Это означает, однако, что он не работает в V, поэтому нет ссылки TIO.Еще несколько тестов:
Что мне действительно нужно, так это способ открыть URL с пробелами в нем. Замена их
+
первым - это слишком много байтов!источник
+
?filetype plugin on
:r [url]?client=opera&q=^R"
вместоq:ir [url]?client=opera&q=<esc>p
.^R
это фактический байт, отправленный при нажатии клавиши <Cr>, а не клавиши^
и всеR
вместе, поэтому он считается только одним байтом.http://google.com/complete/search?client=hp&q=your_query
(client=gma
=> Простой JSON и более короткий текст.).Python + запрашивает
121117103 байтисточник
JavaScript, 109 байт
Promise
, ты должен любить это, но человек это многословно! В этом ответе используетсяfetch()
API извлечения на основе обещаний, присутствующий в современных браузерах. Обещания работают, устанавливая обработчики для асинхронных действий в начале, таких как обратные вызовы, но лучше..then()
Принимает функцию , которая будет вызываться в результате действий асинхронных..then(r=>r.json())
использует.json()
метод ответа для преобразования текстового массива в управляемую переменную, второй.then()
просто извлекает первый ответ.Использование:
источник
.then(r=>r.json()).then(r=>r[1][0])
->.then(r=>r.json()[1][0])
Наслаждайтесь на 11 символов меньше ;-).json()
возвращает Обещание, по какой-то причине оно асинхронноеC #,
192112111 байтСохранено 80 байт благодаря @TheLethalCoder. Спасибо за переформатирование моего кода, я не знал, что было разрешено просто оставить без внимания окружающее тело класса и метода :)
Сохранил другой байт, заменив
gma
егоhp
, так как это не имеет значения для разбора, и перед телом ответа есть лишь некоторая тарабарщина.Я в буквальном смысле грубо заставил API найти
gma
иhp
.источник
Groovy, 122 байта
В принципе:
Получить текст с конечной точки.
Удалите деталь с квадратными скобками в конце, это неверный синтаксис.
Разобрать оставшийся бит как массив Groovy.
Возьмите второй элемент массива результатов.
источник
PowerShell,
133115 байтПробный прогон
Командная строка Windows CMD:
Консоль PowerShell:
источник
R 111 байтов
С тех пор, как я в последний раз приезжал сюда, но давал ему шанс:
Использование пакета
jsonlite
для преобразования выбранной строкиreadLines()
в объект списка.Затем извлеките второй элемент, например (дает предупреждение, что нам не нужно заботиться):
источник
C #, 127 байт
Полная и отформатированная версия:
источник