没有代表上限,您的声誉如何?


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​​或直接访问网站。不允许使用网址缩短符。
  • 如果还有其他方法可以找到没有代表上限的代表,那么您将无法使用它。您必须使用上述页面中的数据。

请注意,作为答案的帖子的网址有不同的扩展名:

/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
大声笑,我从来没有打过repcap。
HyperNeutrino'5

只是要澄清一下,您的最高声望是您的总声望总数,而声望在方括号内变化?
重力1998年

Answers:


3

Perl 5(带有curl),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}

滥用答案网址中包含a #的事实。如果您不喜欢stderr充满进度条-scurl则可以添加标志。我希望有人能通过各种各样的声誉页面测试它-我不确定我不会错过任何东西。

顺便说一句,我的是421,可能是451。


我以前从未使用过Perl,也看不到从哪里获得原始数据。如果要对此进行测试,应将原始数据放在哪里?注意:我在Windows 10上使用Strawberry。我没有Unix或OSX。我怎么称呼它?
Stewie Griffin'5

@Stewie Griffin它从stdin读取原始数据。该代码是单行代码,应执行类似的代码perl -nE 'code' < filename。您可能需要在Windows上做一些不同的引用和转义,我对那里的环境不是很熟悉。
克里斯(Chris)

小型优化:https://如果您将-L标志传递给curl,则可以将其删除,从而使其遵循301重定向
-markasoftware

@Markasoftware但是,这将跟随多次重定向到实际页面,对吗?照原样,我的代码解析的是301重定向,/codegolf//a/$2而不是页面本身。
克里斯(Chris)

我得到Search pattern not terminated at -e line 1.当我尝试这一点。我只是使用您在注释(perl -nE ..)中编写的内容粘贴整个代码,同时将文件保存在当前工作目录中。知道为什么会这样吗?
Stewie Griffin'5
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.