En este desafío, calculará cuál sería su reputación, si el límite de reputación no existiera en PPCG.
Todos pueden acceder a los datos sin formato para los cambios de reputación en la dirección: codegolf.stackexchange.com/reputation . Los datos en bruto siguen una configuración como esta (estas son las primeras líneas de mi versión de la 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
La primera línea es irrelevante para este desafío (muestra el número total de votos que ha recibido en todas sus respuestas y preguntas). La segunda línea muestra el "Bono de asociación". Si no tiene la bonificación, esa línea no estará allí en absoluto.
Después de estas dos (o una, si no hay bonificación) líneas, tendrá una lista de cambios de reputación por pregunta, junto con un resumen de todas las repeticiones ganadas / perdidas en cada día. También obtendrá una lista de la reputación total que tiene al final de ese día. Solo los días en los que cambió su reputación se muestran en esta lista.
Hay identificadores al comienzo de cada línea (excepto las líneas de resumen diario). Estos representan los siguientes posibles motivos de cambio de reputación:
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)
Los números que faltan ( 5,6,7,10,11,13,14,15
no afectan la reputación).
Su desafío es calcular la reputación que tendría, si no fuera por el límite de reputación.
Cómo harás esto:
Guarde el contenido codegolf.stackexchange.com/reputation
como texto sin formato localmente, o en algún otro lugar de su elección (esto es porque necesita iniciar sesión para acceder a la información). Puede recuperar los datos del sitio web directamente si lo prefiere, aunque supongo que será mucho más largo.
Resuma todos los cambios de reputación positivos y negativos. Los votos que no resultan en un cambio de reputación (debido al límite de repeticiones) se muestran así (observe los corchetes, en lugar de paréntesis regulares):
2 106125 [0]
2 106125 [0]
3 106125 [-2]
2 106088 [2]
2 106125 [0]
2 106088 [0]
Debe incluir el representante que habría recibido si no fuera por el límite.
El número de publicación 106125
es una pregunta , mientras que 106088
es una respuesta . Como puede ver, no hay forma de saber la diferencia entre los dos utilizando solo los datos dados en la tabla. Por lo tanto, debe acceder al sitio web ( codegolf.stackexchange.com
) para verificar si una publicación es una pregunta o respuesta. También puede usar la API para esto.
Reglas:
- Todos deben poder ejecutar su script para que:
- Debe incluir todos los diferentes tipos de cambio de reputación, incluso si no lo ha encontrado usted mismo.
- El código debe funcionar incluso si no ha recibido el bono de Asociación (la línea no estará allí si no lo ha hecho)
- Puede usar idiomas no libres (Mathematica, MATLAB, etc.), siempre que otros con una licencia puedan ejecutar el código.
- No tiene que proporcionar los datos sin procesar, ya que todos pueden probar su código en su propia versión de la página (sin embargo, será interesante si comparte los resultados, pero eso es opcional).
- Puede usar la API o acceder al sitio web directamente. No se permiten acortadores de URL.
- Si hay otras formas de encontrar el representante que tendría sin el límite de repeticiones, entonces no puede usarlo. Debe usar los datos de la página mencionada.
Tenga en cuenta que las publicaciones que son respuestas obtienen una extensión diferente de la 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
Salida:
La salida debe ser:
Rep w cap: 15440
Rep w/o cap: 16202
El formato es opcional, [15440,16202]
se acepta. Rep w cap
se puede tomar directamente de la línea: ** total rep 15440 :)
cerca de la parte inferior de la página.
Este es el código de golf, por lo que gana el código más corto en bytes.
fuente
Respuestas:
Perl 5 (con curl), 209 + 1 (-n flag) = 210 bytes
Abusa del hecho de que la url de una respuesta tiene una
#
. Puede agregar una-s
bandera despuéscurl
si no desea que stderr se inunde con barras de progreso. Agradecería que alguien con una página de reputación más variada lo pruebe. No puedo estar seguro de que no me perdí nada.El mío es 421 y sería 451, por cierto.
fuente
perl -nE 'code' < filename
. Puede que tenga que hacer algunas citas diferentes y escapar de las cosas en Windows, no estoy muy familiarizado con el entorno allí.https://
si pasa la-L
bandera a curl, permitiendo que siga la redirección 301/codegolf//a/$2
lugar de la página en sí.Search pattern not terminated at -e line 1.
cuando intento esto. Simplemente pego todo el código usando lo que escribió en el comentario (perl -nE ..
), mientras guardo el archivo en el directorio de trabajo actual. ¿Alguna idea de por qué podría ser eso?