Nesse desafio, você calculará qual seria sua reputação se o limite de reputação não existisse no PPCG.
Todos podem acessar os dados brutos para alterações de reputação no endereço: codegolf.stackexchange.com/reputation . Os dados brutos seguem uma configuração como esta (estas são as primeiras linhas da minha versão da página.
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
A primeira linha é irrelevante para esse desafio (mostra o número total de votos que você recebeu em todas as suas respostas e perguntas). A segunda linha mostra o "bônus de associação". Se você não tiver o bônus, essa linha não estará lá.
Após essas duas linhas (ou uma, se não houver bônus), você terá uma lista de alterações de reputação por pergunta, juntamente com um resumo de todo o representante ganho / perdido em cada dia. Você também receberá uma lista da reputação total que possui no final desse dia. Apenas os dias em que sua reputação mudou são mostrados nesta lista.
Existem identificadores no início de cada linha (exceto as linhas de resumo diárias). Eles representam os seguintes motivos potenciais de mudança de reputação:
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)
Os números ausentes ( 5,6,7,10,11,13,14,15
não afetam a reputação).
Seu desafio é calcular a reputação que você teria, se não fosse o limite de reputação.
Como você fará isso:
Salve o conteúdo codegolf.stackexchange.com/reputation
como texto simples localmente ou em algum outro local de sua escolha (isso ocorre porque você precisa fazer login para acessar as informações). Você pode recuperar os dados diretamente do site, se preferir, embora eu assuma que isso será muito mais demorado.
Resuma todas as mudanças positivas e negativas na reputação. Os votos que não resultam em uma alteração na reputação (devido ao limite de representantes) são mostrados assim (observe os colchetes, em vez de parênteses regulares):
2 106125 [0]
2 106125 [0]
3 106125 [-2]
2 106088 [2]
2 106125 [0]
2 106088 [0]
Você deve incluir o representante que receberia se não fosse o limite.
O número da postagem 106125
é uma pergunta , enquanto 106088
é uma resposta . Como você pode ver, não há como diferenciar os dois usando apenas os dados fornecidos na tabela. Portanto, você deve acessar o site ( codegolf.stackexchange.com
) para verificar se uma postagem é uma pergunta ou resposta. Você também pode usar a API para isso.
Regras:
- Todos devem poder executar seu script para:
- Você deve incluir todos os diferentes tipos de alteração de reputação, mesmo que você não a tenha encontrado.
- O código deve funcionar mesmo que você não tenha recebido o bônus de associação (a linha não estará lá se você não tiver)
- Você pode usar idiomas não livres (Mathematica, MATLAB etc.), desde que outros com uma licença possam executar o código.
- Você não precisa fornecer os dados brutos, pois todos podem testar seu código em sua própria versão da página (será interessante se você compartilhar os resultados, mas isso é opcional).
- Você pode usar a API ou acessar o site diretamente. encurtadores de URL não são permitidos.
- Se houver outras maneiras de encontrar o representante que você teria sem a tampa do representante, não poderá usá-lo. Você precisa usar os dados da página mencionada.
Observe que as postagens que são respostas têm uma extensão diferente para o 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
Resultado:
A saída deve ser:
Rep w cap: 15440
Rep w/o cap: 16202
O formato é opcional, [15440,16202]
é aceito. Rep w cap
pode ser obtido diretamente da linha: ** total rep 15440 :)
próximo à parte inferior da página.
Isso é código-golfe, portanto o código mais curto em bytes vence.
fonte
Respostas:
Perl 5 (com ondulação), 209 + 1 (-n sinalizador) = 210 bytes
Abusa do fato de que o URL para uma resposta tem um
#
. Pode adicionar uma-s
bandeira depoiscurl
se você não gostar do stderr sendo inundado com barras de progresso. Eu apreciaria alguém com uma página de reputação mais variada testando - não posso ter certeza de que não perdi nada.A minha é 421 e seria 451, a propósito.
fonte
perl -nE 'code' < filename
. Você pode ter que fazer algumas citações e escapar de coisas diferentes no Windows, não estou muito familiarizado com o ambiente lá.https://
se você passar a-L
bandeira de onda, permitindo-lhe seguir o redirecionamento 301/codegolf//a/$2
vez da própria página.Search pattern not terminated at -e line 1.
quando tento isso. Simplesmente colo o código inteiro usando o que você escreveu no comentário (perl -nE ..
), enquanto o arquivo é salvo no diretório de trabalho atual. Alguma idéia do porquê disso?