Я возился с функцией запроса url в Pyth и заметил, что google всегда давал мне ответ немного другой длины, обычно это ~10500
символы.
Таким образом, ваша задача в этой задаче - распечатать среднюю длину ответа html http://google.com
.
Спекуляции
- Вы примете ввод,
n
который является количество запросов, чтобы сделать. - Для каждого запроса вы будете отправлять запрос HTTP.
- Вы будете считать тело ответа (текст HTML), а не заголовки.
- Выведите среднее арифметическое длин ответов.
- Вы можете получить доступ только к URL
http://google.com
, а не к любому другому. - Это код-гольф , поэтому выигрывает самый короткий код в байтах !
Пример вывода для ввода 10
: 10560.1
(Я использовал Python urllib
для этого)
PS: кто-нибудь знает, почему Google это делает?
http://google.com
всегда возвращает 261 байт для меня ...https://google.com/ncr
может вернуть больше, хотя.http://google.com
всегда возвращает 10422 байта для меня ...http://google.com
отправляемый HTTP-ответ . Конечно, проблема не в этом, поэтому проблема должна быть отредактирована в IMO, чтобы отразить это.Ответы:
Bash + системные утилиты,
56534948 байтОбновление: сэкономлено 4 байта благодаря Digital Trauma и еще 1 байт благодаря Деннису
В моем первоначальном ответе я использовал
yes
в сочетании сxargs
для эмуляции цикла for. Ноcurl
может принимать в качестве входных данных список URL-адресов, поэтому наyes
самом деле нужен только вывод с .При
curl
доступе к google.com он получает страницу перенаправления 302 с новым URL-адресом в разделе тела сообщения, поэтому-L
для него необходим параметр.Пример запуска: ответ печатается в STDOUT, я просто перенаправляю STDERR
Пояснение: (из первоначально представленного кода)
Редактировать: я заменил
wc -m
наwc
, потому что даже если без аргументов он печатает на 2 больше статистики, чем та, которую я хотел, тот жеdc
сценарий, следующий за этим выводом, все еще работает, потому что желаемое количество, к счастью, помещается на вершину стека во время синтаксического анализа.источник
xargs
. Спасибо, я обновил ответ.-s
. Блуждающий вывод в STDERR разрешен по умолчанию.MATL , 28 байт
Гиф или этого не случилось:
Как это работает
источник
PowerShell , 48 байт
объяснение
1
входного целого числа.Invoke-RestMethod
(irm
) на главной странице Google. Результатом является не JSON, поэтому он вернет тело вместо того, чтобы десериализовать его.Measure-Object
(measure
), получая среднее значениеLength
свойства входных строк (тел).Average
свойство.источник
|% A*
возможно, я всегда избегал,measure
потому что я думал, что вы не можете подстановить имя свойства ...|? A*
на некоторые интересные вещи, а также. Мне нужно посмотреть на мои файлы презентации и добавить этот материал в ветку советов.Ява 8,
197184182181 байтGolfed:
Ungolfed:
Это приводит к утечке ресурсов, но это небольшая цена, которую приходится платить в поисках наименьшего количества байтов.
источник
n->{int s=0,i=0;for(;i<n;++i)try{...}catch(Exception e){}return s*1.0/n;}
, Не уверен, сможете ли вы заменитьs*1.0/n
вs*1f/n
for(;i<n;++i)
можно изменитьfor(;i++<n;)
на -1 байт.Pyth, 25 байт
'
это открытая функция в Pyth, и когда ей дается строка, начинающаяся сhttp
, она выполняет GET-запрос к этому сайту. Возвращаемое значение представляет собой списокbytes
объектов. К сожалению, Pyth'ss
не знает, как объединить эти объекты, поэтому вместо этогоls
я использую,slM
чтобы получить общую длину. Это выполняется количество раз, равное входному значениюm
, а результаты усредняются по.O
.источник
05AB1E , 15 байтов
Код:
Объяснение:
Использует кодировку CP-1252 . При запуске в автономном переводчике я получаю следующее:
источник
PHP,
9078 байтисточник
join(file())
вместо того, чтобыfile_get_contents()
сэкономить вам несколько байтов.echo
. Также вы можете использовать$i
вместо$argv[1]
делителя.Mathematica, 58 байт
Анонимная функция. Принимает число в качестве ввода и возвращает число в качестве вывода.
источник
N@
? Вы не печатаете это, поэтому нет никакой причины, чтобы отформатировать это хорошо.Python, 102 байта
Или, если мы можем вернуть целые числа, а не с плавающей точкой, ответ может быть 98 байтов:
источник
)for x in[
, Кроме того, если вы ограничитесь Python 3, разделение будет автоматически делением с плавающей запятой, и вы можете удалить его0.0
.[]
во 2-м случае -sum
принимаетgenerator
CJam , 23 байта
Не работает на TIO по соображениям безопасности.
Тестовый забег
Как это работает
источник
CJam, 27 байт
CJam предполагает HTTP, если не указан.
объяснение
источник
Clojure, 102 байта
Ungolfed:
#(count (slurp (clojure.java.io/reader "http://www.google.com")))
является локальной функцией, которая подсчитывает байты из http-запроса в google,repeatedly
вызывает функцию n раз и составляет список из возвращенных подсчетов, сокращает суммы результатов вместе, и, наконец, делится на n, чтобы получить среднее значение. Снижение начинается с 0,0, чтобы заставить результат получить плавающее число, иначе деление приведет к рациональному. Вся вещь обернута в анонимную функцию, которая берет количество раз, чтобы назвать запрос.источник
(clojure.java.io/reader)
Часть ненужно кстати. Это делается автоматически за кулисами, если вы передаете строку.Python 3, 95 байт
Рекурсивное решение
где
n=i=int(input())
библиотека запросов
источник
Python 3 + [Requests](http://docs.python-requests.org/en/master/user/install/#install), 95 bytes
urllib2
является нативной (предустановленной) библиотекой Python docs.python.org/2/library/urllib2.html, поэтому любой, кто загружает Python, может немедленно запустить свой код. Я не могу запустить ваш код на моем Python 3 без этой библиотеки.Perl, 66 байт
51 байт + 14 байт для
-MLWP::Simple<space>
+ 1 байт для-p
.Простое решение с использованием LWP :: Simple .
get
Функция экспортируется по умолчанию и возвращает содержимое ответа на успех.Perl 5.14+,
9493 байта (только основные модули)79 байт + 13 байт для
-MHTTP::Tiny<space>
+ 1 байт для-p
.Использует HTTP :: Tiny , который был в ядре с Perl 5.14.
Как это работает
Это:
является косвенным синтаксисом объекта эквивалентным этому:
и сохраняет три байта.
get
Метод возвращает hashref с хранящимися подcontent
ключ.Чтобы получить актуальное содержание ответа, мы делаем:
что эквивалентно:
но сохраняет один байт, когда мы добавляем
length
:источник
Rebol, 69 байтов
источник
Clojure, 70 байт
Сгиб на
n
большом расстоянии. Суммирует длину каждого запроса, затем делит его на количество запросов. Из-за того, как Clojure обрабатывает деление, это возвращает дробную часть, а не десятичную. Если это неприемлемо, я могу исправить это за счет пары байтов.источник
Рубин, 73 + 10 = 83 байта
Использует
-rnet/http
флаг.источник
Общая Шепелявость + quicklisp / dexador , 23 + 72 = 95 байт
Если quicklisp установлен в системе, он загрузит и установит dexador как необходимый.
Прелюдия:
Код
Ungolfed:
Explaination
(dex:get "http://google.com")
Это выполняет веб-запрос к Google и возвращает пять значений:
(length (dex:get ...))
Если вы не сделаете запрос на явный вывод в противном случае, Common Lisp отбросит все возвращаемые значения, кроме первого, поэтому функция length видит только сам ответ http и возвращает длину этой строки.
(loop :repeat n :sum (length ...))
Это вычисляет длину ответа n раз и добавляет их.
(/ (loop ...) n)
Это делит суммированные длины на n, чтобы вычислить среднее.
(lambda (n) ...)
Это оборачивает тело кода в анонимную функцию, которая принимает n в качестве аргумента и возвращает среднюю длину ответа для n веб-запросов на http://google.com .
источник