Nota: este desafío implica descargar y seleccionar páginas web HTML. Si su idioma no puede manejar esto, es posible que no desee participar en este desafío.
Introducción
Siempre hay discusiones en The Nineteenth Byte Chat sobre quién lidera el estribor. Entonces, ayudemos a todos y cuentemos la cantidad total de estrellas por usuario en el chat.
Desafío
Dado un número entero positivo N
que es mayor que cero, calcule los líderes de estribor de los últimos N
mensajes destacados en el chat. Estos mensajes se pueden ver aquí . Sugerencia: cada página tiene 50 mensajes destacados. La salida será una lista de los 5 principales usuarios por cantidad de mensajes destacados . Se le otorgará un bono de -15% de descuento en su recuento de bytes si puede mostrar los nombres de usuario de esos usuarios, pero no se aplicará ninguna penalización si simplemente muestra los números de identificación de usuario. Tenga en cuenta que hay blasfemias en algunos de los mensajes destacados. Si es sensible a este tipo de lenguaje, vea la página con precaución.
Ejemplos (la imagen es de estribor actual al momento de escribir este desafío):
- (ROJO) Entrada:
5
Salida (Con bonificación):[Geobits Sp3000 PhiNotPi Seadrus]
- (AZUL) Entrada:
10
Salida (Sin bonificación):[51024 17335 24697 116494 129255]
- (VERDE) Entrada:
14
Salida (Sin bonificación):[51024 116494 141697 17335 24697]
Cosas extra:
Los empates en los 5 primeros se ordenarán por el número de identificación de usuario más bajo a más alto . Si hay menos de cinco usuarios, simplemente muestre la tabla de clasificación con espacios vacíos al final. La entrada y la salida pueden estar en cualquier formato. La producción no necesita ser capitalizada. Si la entrada es mayor que 50
, aún debe contar los mensajes en la página 2, página 3, etc. Puede suponer que la entrada siempre estará por debajo 2^31
, y tampoco será tan grande que 1) sea mayor que la cantidad de mensajes destacados que existe y 2) no bloqueará el programa (haciendo matrices demasiado grandes, sin memoria, etc.).
Este es el código de golf , ¡el código más corto en bytes gana!
Tablas de clasificación
Aquí hay un fragmento de pila para generar una tabla de clasificación regular y una descripción general de los ganadores por idioma.
Para asegurarse de que su respuesta se muestre, comience con un título, usando la siguiente plantilla de Markdown:
## Language Name, N bytes
¿Dónde N
está el tamaño de su envío? Si mejora su puntaje, puede mantener los puntajes antiguos en el título, tachándolos. Por ejemplo:
## Ruby, <s>104</s> <s>101</s> 96 bytes
Si desea incluir varios números en su encabezado (por ejemplo, porque su puntaje es la suma de dos archivos o desea enumerar las penalizaciones de la bandera del intérprete por separado), asegúrese de que el puntaje real sea el último número en el encabezado:
## Perl, 43 + 2 (-p flag) = 45 bytes
También puede hacer que el nombre del idioma sea un enlace que luego aparecerá en el fragmento de la tabla de clasificación:
## [><>](http://esolangs.org/wiki/Fish), 121 bytes
var QUESTION_ID=62182,OVERRIDE_USER=36670;function answersUrl(e){return"http://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(e,s){return"http://api.stackexchange.com/2.2/answers/"+s.join(";")+"/comments?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),answers_hash=[],answer_ids=[],e.items.forEach(function(e){e.comments=[];var s=+e.share_link.match(/\d+/);answer_ids.push(s),answers_hash[s]=e}),e.has_more||(more_answers=!1),comment_page=1,getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){e.items.forEach(function(e){e.owner.user_id===OVERRIDE_USER&&answers_hash[e.post_id].comments.push(e)}),e.has_more?getComments():more_answers?getAnswers():process()}})}function getAuthorName(e){return e.owner.display_name}function process(){var e=[];answers.forEach(function(s){var r=s.body;s.comments.forEach(function(e){OVERRIDE_REG.test(e.body)&&(r="<h1>"+e.body.replace(OVERRIDE_REG,"")+"</h1>")});var a=r.match(SCORE_REG);a&&e.push({user:getAuthorName(s),size:+a[2],language:a[1],link:s.share_link})}),e.sort(function(e,s){var r=e.size,a=s.size;return r-a});var s={},r=1,a=null,n=1;e.forEach(function(e){e.size!=a&&(n=r),a=e.size,++r;var t=jQuery("#answer-template").html();t=t.replace("{{PLACE}}",n+".").replace("{{NAME}}",e.user).replace("{{LANGUAGE}}",e.language).replace("{{SIZE}}",e.size).replace("{{LINK}}",e.link),t=jQuery(t),jQuery("#answers").append(t);var o=e.language;/<a/.test(o)&&(o=jQuery(o).text()),s[o]=s[o]||{lang:e.language,user:e.user,size:e.size,link:e.link}});var t=[];for(var o in s)s.hasOwnProperty(o)&&t.push(s[o]);t.sort(function(e,s){return e.lang>s.lang?1:e.lang<s.lang?-1:0});for(var c=0;c<t.length;++c){var i=jQuery("#language-template").html(),o=t[c];i=i.replace("{{LANGUAGE}}",o.lang).replace("{{NAME}}",o.user).replace("{{SIZE}}",o.size).replace("{{LINK}}",o.link),i=jQuery(i),jQuery("#languages").append(i)}}var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",COMMENT_FILTER="!)Q2B_A2kjfAiU78X(md6BoYk",answers=[],answers_hash,answer_ids,answer_page=1,more_answers=!0,comment_page;getAnswers();var SCORE_REG=/<h\d>\s*([^\n,]*[^\s,]),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/,OVERRIDE_REG=/^Override\s*header:\s*/i;
body{text-align:left!important}#answer-list,#language-list{padding:10px;width:290px;float:left}table thead{font-weight:700}table td{padding:5px}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b"> <div id="answer-list"> <h2>Leaderboard</h2> <table class="answer-list"> <thead> <tr><td></td><td>Author</td><td>Language</td><td>Size</td></tr></thead> <tbody id="answers"> </tbody> </table> </div><div id="language-list"> <h2>Winners by Language</h2> <table class="language-list"> <thead> <tr><td>Language</td><td>User</td><td>Score</td></tr></thead> <tbody id="languages"> </tbody> </table> </div><table style="display: none"> <tbody id="answer-template"> <tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{LANGUAGE}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table> <table style="display: none"> <tbody id="language-template"> <tr><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table>
Respuestas:
BrownRecluse ,
sin bonificación = 536con bonificación = 551-15% = 468 bEntrada
Salida
Entrada
Salida
Notas
Este programa (incluida la bonificación) no admite caracteres Unicode. Lo siento, Vɪʜᴀɴ.
Este programa funciona en función de la función estándar de que cada página contiene casi 50 mensajes destacados de forma predeterminada.
Observe claramente que los mensajes 60 y 90 están contenidos dentro de las dos primeras páginas, mientras que las salidas difieren.
Esta es la página de descarga de este lenguaje de programación en caso de que no esté en su poder.
En caso necesario, este es el programa de bonificación de 485 b
Entrada
Salida
Entrada
Salida
fuente
alex-a
s en la salida?