var QUESTION_ID=67472,OVERRIDE_USER=20260;function answersUrl(e){return"https://api.stackexchange.com/2.2/questions/67472/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(e,s){return"https://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>
**Leaderboard:**
Respuestas:
JavaScript (ES7),
444240 bytesTachado 44 sigue siendo regular 44 :(
¡Gracias a @apsillers por guardar 2 bytes!
Explicación
La parte interesante es
-1-~((s-14)**1.3)
.(s-14)**1.3
produce1
,2
,4
y6
para los valores15 - 18
. Cualquier número que sea menor que15
causa un error porque la implementación de JavaScript de exponencial no puede operar en valores negativos con un exponente fraccionario. Básicamente, cualquier valor des < 15
hace que regreseNaN
, por lo que-1-~
está allí para convertirlo en un número (0
).Solución ES6 (42 bytes)
Prueba
Esta prueba utiliza
Math.pow
en su lugar el operador exponencial (**
) para que pueda ejecutarse en cualquier navegador estándar.Mostrar fragmento de código
fuente
|t
lugar de&&t
. La operación ECMAScriptToInt32
siempre obligará al resultado demap
aquí a0
, porque las matrices de elementos múltiples siempre seToNumber
clasificarán comoNaN
. (Esto sería un problema si la especificación permitió arrays de un solo elemento como entrada, pero requiere 6 elementos.)CJam, 18 bytes
o
Pruébalo aquí.
Explicación
La idea es descomponer el costo en tres componentes:
Los tres componentes pueden calcularse mediante una única resta y restringir el resultado a valores no negativos.
fuente
Pyth, 14 bytes
Banco de pruebas
Utiliza los mismos medios fundamentales de cálculo que Martin Büttner, a saber:
Dicho esto, los medios de cálculo son muy diferentes. Para generar la lista de números para restar, utilizo la expresión
+14yB8
.yB8
significa "Bifurcar 8 en la función y". y dobla los números, entonces esto da[8, 16]
. Luego, agregamos 14, dando la lista[14, 8, 16]
.Luego, tomamos el producto cartesiano con la entrada y restamos cada par de valores.
A continuación, realice la operación de maximización, simplemente filtramos solo los valores positivos y sumamos el resto.
fuente
Samau , 19 bytes
No estoy seguro si la pregunta se publica después de la última confirmación de mi nuevo idioma. Ambos son hace 2 horas. Pero todas las características utilizadas aquí se agregaron antes de eso.
Samau utiliza CP737 como codificación de caracteres predeterminada.
fuente
PowerShell, 48 bytes
(Estoy bastante seguro de que esto no es óptimo).
Toma argumentos de línea de comandos de entrada y los canaliza en un bucle
|%{...}
. Cada iteración, incrementamos nuestro total$t+=
con el número actual menos 8$_-8
más el resultado de indexar en una tabla hash para los valores más caros@{...}[$_]
. Luego simplemente salimos$t
al final.fuente
(🐂👍) Ox ++, 248 bytes (62 caracteres)
Idioma en el que estoy trabajando. Pega el código aquí .
fuente