В этом задании вы рассчитаете, какой будет ваша репутация, если в PPCG не существует предела репутации.
Каждый может получить доступ к необработанным данным для изменения репутации по адресу: codegolf.stackexchange.com/reputation . Необработанные данные следуют такой настройке (это первые несколько строк моей версии страницы.
total votes: 2955
-- bonuses (100)
2 37663 (10)
-- 2014-09-11 rep +110 = 111
2 41751 (10)
-- 2014-11-23 rep +10 = 121
2 41751 (10)
2 41751 (10)
-- 2014-11-24 rep +20 = 141
Первая строка не имеет значения для этой задачи (она показывает общее количество голосов, полученных вами за все ваши ответы и вопросы). Вторая строка показывает «Бонус ассоциации». Если у вас нет бонуса, то этой линии вообще не будет.
После этих двух (или одной, если не бонусных) строк у вас будет список изменений репутации по каждому вопросу, а также сводка всех повторений, полученных / потерянных за каждый день. Вы также получите список общей репутации, которую вы имеете в конце этого дня. В этом списке отображаются только дни, когда ваша репутация изменилась.
В начале каждой строки есть идентификаторы (кроме ежедневных сводных строк). Они представляют следующие возможные причины изменения репутации:
1 : Accept (+2 if you accept, +15 if your answer is accepted)
2 : Upvote (+5 for question, +10 for answer)
3 : Downvote (-1 if you downvote answer, -2 if you get downvoted)
4 : Offensive (-100)
8 : Give bounty
9 : Receive bounty
12: Spam (-100)
16: Approved edit (+2)
Недостающие цифры ( 5,6,7,10,11,13,14,15
не влияют на репутацию).
Ваша задача состоит в том, чтобы рассчитать репутацию, которую вы имели бы, если бы не предел репутации.
Как вы это сделаете:
Сохраните содержимое в codegolf.stackexchange.com/reputation
виде простого текста локально или в другом месте по вашему выбору (это потому, что вам необходимо войти в систему для доступа к информации). Вы можете получить данные с веб-сайта напрямую, если хотите, хотя я предполагаю, что это будет намного дольше.
Суммируйте все положительные и отрицательные изменения репутации. Голоса, которые не приводят к изменению репутации (из-за ограничения репутации), отображаются следующим образом (обратите внимание на квадратные скобки вместо обычных скобок):
2 106125 [0]
2 106125 [0]
3 106125 [-2]
2 106088 [2]
2 106125 [0]
2 106088 [0]
Вы должны включить представителя, которого бы вы получили, если бы не кепка.
Сообщение номер 106125
является вопросом , а 106088
является ответом . Как вы можете видеть, невозможно определить разницу между ними, используя только данные, приведенные в таблице. Поэтому вы должны зайти на сайт ( codegolf.stackexchange.com
), чтобы проверить, является ли сообщение вопросом или ответом. Вы также можете использовать API для этого.
Правила:
- Каждый должен иметь возможность запустить ваш скрипт так:
- Вы должны включить все различные типы изменений репутации, даже если вы сами не сталкивались с этим.
- Код должен работать, даже если вы не получили бонус Ассоциации (линия не будет там, если вы не получили)
- Вы можете использовать несвободные языки (Mathematica, MATLAB и т. Д.), Если только другие пользователи с лицензией могут запускать код.
- Вам не нужно предоставлять необработанные данные, поскольку каждый может протестировать ваш код на своей собственной версии страницы (будет интересно, если вы поделитесь результатами, но это не обязательно).
- Вы можете использовать API или получить доступ к веб-сайту напрямую. URL-сокращения не допускаются.
- Если есть другие способы найти представителя, который бы у вас был без шапки, вы не сможете его использовать. Вы должны использовать данные с указанной страницы.
Обратите внимание, что сообщения, которые являются ответами, получают другое расширение URL:
/codegolf/106088 // Answer: Notice the end of the url
/codegolf/106079/detect-ms-windows/106088#106088
/codegolf/106079/ // Question: Notice the end of the url
/codegolf/106079/detect-ms-windows
Выход:
Выход должен быть:
Rep w cap: 15440
Rep w/o cap: 16202
Формат не обязателен, [15440,16202]
принимается. Rep w cap
можно взять прямо с линии: ** total rep 15440 :)
в нижней части страницы.
Это код-гольф, поэтому выигрывает самый короткий код в байтах.
источник
Ответы:
Perl 5 (с curl), 209 + 1 (-n флаг) = 210 байт
Злоупотребляет тем фактом, что URL для ответа есть
#
в нем. Можно добавить-s
флаг после,curl
если вам не нравится, когда stderr наводнен индикаторами выполнения. Я был бы признателен кому-то с более разнообразной страницей репутации, тестирующей это - я не могу быть уверен, что ничего не пропустил.У меня 421, а между прочим 451.
источник
perl -nE 'code' < filename
. Возможно, вам придется сделать несколько других цитат и экранирования вещей в Windows, я не очень знаком с окружающей средой там.https://
если вы передадите-L
флаг curl, позволяя ему следовать перенаправлению 301/codegolf//a/$2
а не саму страницу.Search pattern not terminated at -e line 1.
когда я пытаюсь это. Я просто вставляю весь код, используя то, что вы написали в comment (perl -nE ..
), сохраняя файл в текущем рабочем каталоге. Есть идеи, почему это может быть?