Якою була б ваша репутація без репліка?


16

У цьому виклику ви підрахуєте, якою була б ваша репутація, якби на 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 :)біля нижньої частини сторінки.


Це тому найкоротший код у байті виграє.



4
751. Зірвіть мене і моє життя
Крістофер

2
хаха, я ніколи раніше не потрапляв на реплікацію.
HyperNeutrino

Просто для уточнення, ваша репутація з шапкою - це сума вашого загального представника, а репутація змінюється всередині квадратних дужок?
Гравітон

Відповіді:


3

Perl 5 (з завитком), 209 + 1 (-n прапор) = 210 байт

if(/([0-9]+)\s*([0-9]+) \[([0-9]*)/){$_=`curl /codegolf//a/$2`;@p=(2,5,-1);$p[15]=2;@s=(13,5,-1);$x=$1;$r+=($p[--$x]//-100)-$3;$r+=$s[$x]if/#/;};$t=$1 if/([0-9]+) :/;END{say$t,$",$r+$t}

Зловживає тим фактом, що URL-адреса для відповіді має #в собі значення. Ви можете додати -sпрапор після того, curlяк вам не подобається, коли стідр затоплюється смугами прогресу. Буду вдячний за когось, хто тестує його на репутації, я не можу бути впевнений, що нічого не пропустив.

Моє 421, до речі, було б 451.


Я ніколи раніше не використовував Perl, і я не бачу, звідки ви берете дані. Куди я кладу rawdata, якщо хочу перевірити це? Примітка. Я використовую Полуницю в Windows 10. У мене немає Unix або OS X. І як би я це назвав?
Стюі Гріффін

@Stewie Griffin Він читає необроблені дані з stdin. Код є однолінійним і повинен виконуватись щось подібне perl -nE 'code' < filename. Можливо, вам доведеться робити якісь різні цитування та втечі речей у Windows, я не дуже знайомий із середовищем там.
Кріс

Невелика оптимізація: ви можете видалити, https://якщо ви передасте -Lпрапор для згортання, дозволяючи йому слідувати за переадресацією 301
markasoftware

@Markasoftware Це, однак, буде слідувати за декількома переадресаціями до фактичної сторінки, правда, правда? Як і є, мій код аналізує переадресацію 301, /codegolf//a/$2а не саму сторінку.
Кріс

Я отримую, Search pattern not terminated at -e line 1.коли спробую це. Я просто вставляю весь код, використовуючи те, що ви написали у коментарі ( perl -nE ..), зберігаючи файл у поточному робочому каталозі. Будь-яка ідея, чому це може бути?
Стюі Гріффін
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.