Привет, благородный код гольфистов. Сегодня вы разрешите самые древние и выдающиеся дебаты - Emacs или Vim?
Ваша задача состоит в том, чтобы взять два поисковых запроса в качестве входных данных и вывести, какой из этих терминов имеет больше всего результатов поиска Google. (Это, очевидно, совершенно справедливо. Что вы имеете в виду, предвзято?)
Вот несколько примеров входов и выходов:
Input: emacs
и vim
Output: vim
(полностью не создает никаких пламенных войн в комментариях)
Вход google
и microsoft
выход:google
Вход code golf stack exchange
и code review stack exchange
выход: code golf stack exchange
(да!)
И вот некоторые крайние случаи просто для удовольствия (и для тестирования ваших решений):
Вход About 1,000,000 results
и About 100,000 results
выход:About 100,000 results
Вход: This will autocotrect
и Another testcase
Выход: Another testcase
(если вы не рассматриваете автозамену, то победит первый)
В следующих тестовых примерах вы должны #
сначала удалить знаки в терминах поиска, так как они основаны на термине, имеющем определенное количество результатов, и размещение этого термина может разрушить это.
Ввод Thissear#chter#mhasno#results
и Another testcase
вывод: Another testcase
(просто тест на нулевой результат)
Вход "These exact wo#rds do#n't exi#st# on the Internet"
и Another testcase
выход: Another testcase
(тестирование "
с)
Входные данные: Abo#ut 1,65#2,85#3,2#86 re#sults
и Another testcase
выходные данные: Another testcase
(это сложно - у приведенного выше поискового запроса есть один результат)
Входные данные: "Abo#ut 4#8,234,8#75,14#7 res#ults"
и Another testcase
выходные данные: Another testcase
(также сложно - нет результатов, поэтому он отображает поисковый запрос)
Вам не нужно обрабатывать угловой случай "quoted"
поиска, возвращающего «Нет результатов, вместо которого отображаются результаты без кавычек», потому что это было бы слишком сложно. Вам также не нужно обрабатывать входы с одинаковым количеством результатов.
Это код-гольф , поэтому выиграет самый короткий код в байтах!
Ответы:
Коэффициент ,
305201196200201188184182179169178171165199171170165163 байтаЯзык почти такой же многословный, как Java, превосходящий Ruby ... и Powershell! : D
Лучше регулярное выражение, сейчас. Спасибо @fede s. на 5 байтов!
Или
159157, если результат может быть как{ "vim" 9782948234 }
:С другой стороны, если мы хотим быть неубиваемыми, за
199196193 байта :Неубиваемый, потому что он анализирует HTML, поэтому он более надежен, чем ответы с использованием регулярных выражений.
источник
unkillable
метод. Это на самом деле короче в PowerShell, чем с помощью регулярных выражений. (Тем не менее, все еще на 2 байта длиннее, чем ваш ответ регулярного выражения). Я бы не стал называть powershell succint, так как названия команд редко бывают короткими (iwr
это псевдоним по умолчанию дляinvoke-webrequest
иsort
дляsort-object
, иначе это будет намного дольше)Рубин,
203180 байт+11 байт для
-ropen-uri
флага (плюс пробел).Ввод принимается как два аргумента.
Объяснение URL:
?nord=1
: запретить автоматическое перенаправление с HTTP на HTTPS&q=#{URI.escape x}
: экранируйте запрос, чтобы он"
работал&nfpr=1
: нет автозаменыВсе
map
превращается['emacs','vim']
в[[2150000, 'emacs'], [14900000, 'vim']]
. (Вы можете увидеть это, изменив.max[1]
в конце значение на.inspect
.) Затемmax
берется тот, который возьмет тот, у которого наибольшее количество результатов, и[1]
используется для получения критерия поиска.источник
Thissear#chter#mhasno#results
теперь покажет этот вопрос в Google :) Интересно, что он показывает 2 результата (по крайней мере для меня!) - google.com/… NB. Любое соответствие регулярному выражению "About * results" пропустит найденный результат на этой странице :(ruby -ropen-uri
а не в файле.Из текстовых редакторов, упомянутых в проблеме, только один из них может решить эту проблему самостоятельно ...
Emacs: 137 нажатий клавиш
Предполагается, что первые поисковые термины будут в первой строке, а вторые поисковые термины - во второй строке с курсором в начале буфера.
Для тех, кто не знаком с Emacs,
C-s
значитCtrl-S
.M-z
означаетAlt-Z
(Alt
скорее всего, ваш мета-ключ)M-<
означаетAlt-<
илиAlt-Shift-,
C-S-e
средстваCtrl-Shift-e
Для тех, кто знаком с Emacs,
emacs -q
. Это не загружает ваш.emacs
файл, поэтому любые модные пакеты не будут мешать этому.объяснение
Напишите начало элиста
<C-o><C-u><C-k>
Сохраняет аргументы с новой строкой(if(<<C-y><C-y>
Запишите начало оператора if и разместите 2 копии аргументов<M-<><C-n>
Перейти ко второй строкеОпределите макрос HTTP. Это преобразует аргумент в поисковый URL Google, а затем возвращает количество результатов поиска.
<F3>
Начните определять макрос клавиатуры<C-a>
Перейти к началу поискового запроса.http://google.com/search?nfpr=1&q=
Добавить поисковый URL<C-S-e><M-x>r-st<RET> <RET>+<RET>
Замените все пробелы знаком +.<C-a><C-k><M-x>b-em<RET><C-y><RET>
Emacs извлекает необработанный HTML (b-em
сокращенноbrowse-url-emacs
)<C-x><C-q>
Сделайте файл доступным для записи (обязательно, чтобы макрос не ошибался или нет)<C-s><RET>ts"><RET>
Перейти к количеству результатов div (необходимо выполнять обычный поиск, поскольку макросы emacs полагаются на работу isearch)<M-z><
Вырежьте текст из различий (вот почему это было необходимо)<C-x>0
Вернитесь к исходному буферу<C-y>0 r
;; Поместите результаты обратно в строку ('0 r' не обрабатывает результаты)<C-a><C-M-s><RET>[0-9]<RET><C-b><M-z> <C-a><C-y><C-k>
;; Извлеките число из строки.<C-S-a><M-x><up><up><RET>,<RET><RET>
Убирает запятые из числа<F4>
Закончить макрос клавиатурыПереместитесь вниз и выполните макрос клавиатуры на следующей строке.
<C-n>
Идет к следующей строке<F4>
Повторите макрос один раз.Завершите оператор elisp и выполните его
<C-e>)(next-line)())
Завершите утверждение elisp<C-x><C-e>
Оцените команду elisp<C-n><C-a><C-k>
Убей победный аргумент<C-x>h<DEL>
Удалить все остальное<C-y>
Вставьте аргумент победыЗапусти сам
К счастью, вам не нужно идеально вводить все эти нажатия клавиш! Мясо и картофель - все в макросе, который вы можете просто скопировать и вставить. Макрос можно скопировать и вставить в Emacs!
1. Редактировать макрос клавиатуры
<C-x><C-k><C-e>
2. Вставить это во весь буфер (вставка должна быть
<C-y>
)<C-c><C-c>
чтобы сохранить макрос.<F4>
на запуск макроса (или просто запустите его самостоятельно, чтобы попробовать)Предостережения
<C-x><k> search<TAB>
<input type="submit" name="submit" value="Submit"...>
, то, скорее всего, это произошло.<C-x><C-b>
и выберите буфер с поисковым термином в нем).источник
Of the text editors mentioned in the problem, only one of them can solve this on its own...
это правда? действительно ли нет библиотек HTTP для vimscript?curl
и получить тот же эффект. (но тогда ваш ответ должен указывать, что это vim + curl).Java,
828800783744739687 байтисточник
args
вместо StdIn?Python 3,
227226208213226220221206202200198 байтовНазначьте лямбду на то, чтобы это назвать.
Использует библиотеку запросов .
Ungolfed:
источник
NameError: name 'quote' is not defined
quote
вернутьсяurllib.parse.quote
после абсолютного импорта.Powershell,
175, 172 байтаОтображение партитуры и имени сократило бы еще 2 байта.
Используется та же
unkillable
функция, что и в ответе «196 Byte
Фактор» (анализируемый HTML), и сокращается по сравнению с предыдущим ответом регулярного выражения.источник
Ракетка,
360337 байт0.o
Есть причина, по которой они называют это «Затерянным в море скобок».
Ungolfed:
источник