1 июля - день Канады (ура, Канада)! Или это? Кажется, что страница Википедии на этот день имеет много контента, связанного с Канадой, но есть ли другой день, который более канадский?
Ваша задача - написать программу или функцию, которая принимает в качестве входных данных дату (месяц и день) и возвращает или выводит количество упоминаний «Канада» на странице Википедии для вводимой даты. Некоторые правила:
- Даты могут быть введены в любом разумном формате по вашему выбору
- Ваша заявка должна извлечь данные из URL
en.wikipedia.org/wiki/Month_Day
. - Только
"Canada"
нужно искать и подсчитывали включены подстроки, и только в названии случае."Canadian"
не считается, однако"Canada's"
считается. Пока точный, чувствительный к регистру текст"Canada"
существует в строке, он соответствует - Содержимое страницы рассматривается как что-либо в соответствующем
.html
файле (то есть, что появляется, если вы загрузите страницу как a.html
и откроете ее в блокноте) - Результат может быть выведен в STDOUT, возвращен или отображен любым другим разумным способом
Тестовые случаи:
July 1 => 34
May 14 => 1
Oct 31 => 2
July 4 => 2
Это код гольф, поэтому выигрывает самая короткая подача
(В качестве неоплаченного бонуса мне интересно посмотреть, какой день с наибольшим количеством очков)
Ответы:
Pyth, 31 байт
Не работает онлайн-реализация, сервер отключает доступ в интернет. Я хотел использовать http://wki.pe/July_1, но, к сожалению, это перенаправление на стороне клиента, поэтому он выбирает не ту страницу. Формат входного сигнала
July_1
.Код в основном просто:
источник
Баш,
434240 байтИспользует
curl
,grep
иwc
для подсчета случаев «Канада» на указанной веб-странице. Как и другие ответы, ввод дается в форматеJuly_1
. Это мой первый пост на Code Golf SE, и я не совсем знаком со всеми правилами. Любая обратная связь будет приветствоваться.Не осознавал, что вывод на
STDERR
традиционно игнорируется. Спасибо за 3 байта, Деннис !источник
curl -sL
равно не будет корочеwget -qO-
?curl
без-s
(илиwget
без-q
).STDERR
игнорируется. Очень признателен.STDERR
по умолчанию игнорируется, было бы короче-s
полностью опустить его .Perl 5, 39 байт
38 байт, плюс 1
-pe
вместо-e
Принимает участие как
July_1
.Спасибо busukxuan за то, что он спас мне семь байтов.
источник
Python 3.5,
1171119890 байт( -8 байт (
98 -> 90
) благодаря alexwlchan )Просто использует встроенную в Python библиотеку «urllib» для извлечения данных HTML, а затем подсчитывает вхождения слов «Canada» в эти данные. Постараюсь и больше играть в гольф, где и когда смогу. Вызовите его, переименовав
lambda
функцию во что угодно, а затем вызвав это имя как обычную функцию, заключенную в оболочкуprint()
. Например, если функция была названаH
, вы бы назвали ее такprint(H(Month_Day))
.источник
.decode().count("Canada")
на.count(b"Canada")
.urllib.urlopen
функция не находится в подпакете (поfrom urllib import*
сравнению сfrom urllib.request import*
), и ееb"Canada"
можно заменить на,"Canada"
так как строки Python 2 по умолчанию являются байтами. Я считаю 81 байт в Python 2, и он работает в соответствии с моим тестированием.Mathematica, 60 байт
Анонимная функция. Аналогично решению Perl 5, принимает входные данные, как
July_1
.источник
PowerShell, 52 байта
July_1
.iwr
это сокращение отInvoke-WebRequest
.$($args[0])
это первый аргумент командной строки. Запустить скрипт какOhCanada.ps1 July_1
.-csplit
чувствительно к регистру.источник
C #, 85 байт
Принимает участие
d
какJuly_1
.И
July_1
это действительно День Канады, имеющий больше всего упоминаний. СFebruary_1
иApril_23
делят 2-е место с 18"Canada"
с каждый.Найти
"Canada"
день (параллельно), 207 байт:(Год 8 - високосный год с самым коротким представлением). Потенциально неэффективно, так как,
OrderBy
вероятно, генерирует> 366 веб-вызовов, но просто уходит короче и, кажется, завершается не намного быстрее.источник
R,
9996 байтx = function (d) {p = readLines (paste0 (" http://enwp.org/ ", d)); sum (nchar (p) -nchar (gsub ("Canada", "", p))) / 6}Он принимает ввод d в форме "July_1" и возвращает количество Канад. Он подсчитывает слова путем подсчета количества символов на странице, затем удаляет слово «Канада» со страницы и снова подсчитывает количество символов. Количество раз, которое Канада показывает, является разницей в этих подсчетах, деленной на количество букв в Канаде, 6.
редактировать: я ценю совет ниже о замене моей функции сканирования.
источник
x=function(d){
и заменить его наd=scan(,'')
создание программы вместо функции и сохранение некоторых байтов.ES6, 89 байт
Печально Развертывание всех обещаний наказывает размер: /
источник
July_1
трюк «входные данные в формате », что и остальные вопросы, чтобы сохранить несколько байтов. У вас также есть ошибка использованияsplit().length()
, которая даст вам ответ больше, чем цель.-1
после.length
, но вы можете сохранить несколько байтов, пропустивhttps:
часть URL, и использоватьsplit'Canada'
(но с обратными галочками!) Вместо того,split('Canada')
чтобы сохранить еще пару!//
послеhttp
.Ruby + curl, 44 байта
ruby -n
+ 43 байта. Принимает участие какJuly_1
.источник
Clojure, 71 байт
Да, было бы неплохо использовать,
http://enwp.org
но я думаюslurp
, не обрабатывает перенаправления (?). Анонимная функция, которая принимает день в формате «July_1».источник
PHP, 65 байт
источник