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:**
Antworten:
JavaScript (ES7),
444240 ByteDurchgestrichen 44 ist immer noch regulär 44 :(
Vielen Dank an @apsillers für die Einsparung von 2 Bytes!
Erläuterung
Der interessante Teil ist
-1-~((s-14)**1.3)
.(s-14)**1.3
produziert1
,2
,4
und6
für die Werte15 - 18
. Jede Zahl, die kleiner als ist,15
verursacht einen Fehler, da die JavaScript-Implementierung von Exponential nicht mit negativen Werten mit einem Bruchexponenten arbeiten kann. Grundsätzlichs < 15
bewirkt jeder Wert für, dass er zurückgegeben wirdNaN
, sodass der Wert-1-~
dort in eine Zahl (0
) umgewandelt werden kann.ES6-Lösung (42 Byte)
Prüfung
In diesem Test wird
Math.pow
stattdessen der Exponentialoperator (**
) verwendet, damit er in jedem Standardbrowser ausgeführt werden kann.Code-Snippet anzeigen
quelle
|t
anstelle von&&t
. Die ECMAScript-OperationToInt32
erzwingt immer das Ergebnis von "map
to"0
, da Arrays mit mehreren Elementen immer "ToNumber
-ify to" ergebenNaN
. (Dies wäre ein Problem, wenn die Spezifikation Einzelelement-Arrays als EingabeCJam, 18 Bytes
oder
Teste es hier.
Erläuterung
Die Idee ist, die Punktkosten in drei Komponenten zu zerlegen:
Alle drei Komponenten können über eine einzige Subtraktion berechnet und das Ergebnis auf nicht negative Werte begrenzt werden.
quelle
Pyth, 14 Bytes
Testsuite
Dabei werden dieselben grundlegenden Berechnungsmittel wie bei Martin Büttner verwendet:
Allerdings sind die Berechnungsmittel sehr unterschiedlich. Um die Liste der zu subtrahierenden Zahlen zu generieren, verwende ich den Ausdruck
+14yB8
.yB8
bedeutet "Bifurkate 8 auf die Funktion y". y verdoppelt Zahlen, also gibt dies[8, 16]
. Dann fügen wir 14 hinzu und geben die Liste an[14, 8, 16]
.Als nächstes nehmen wir das kartesische Produkt mit der Eingabe und subtrahieren jedes Wertepaar.
Führen Sie als Nächstes die Maximierungsoperation aus, filtern Sie einfach nur nach positiven Werten und addieren Sie den Rest.
quelle
Samau , 19 Bytes
Ich bin mir nicht sicher, ob die Frage nach dem letzten Commit meiner neuen Sprache veröffentlicht wurde. Sie sind beide vor 2 Stunden. Alle hier verwendeten Funktionen wurden jedoch zuvor hinzugefügt.
Samau verwendet CP737 als Standardzeichencodierung.
quelle
PowerShell, 48 Bytes
(Ziemlich sicher, dass dies nicht optimal ist.)
Übernimmt Eingabebefehlszeilenargumente und leitet sie in eine Schleife weiter
|%{...}
. Bei jeder Iteration erhöhen wir unsere Summe$t+=
um die aktuelle Zahl minus 8$_-8
plus das Ergebnis der Indizierung in eine Hash-Tabelle für die teureren Werte@{...}[$_]
. Dann geben wir einfach$t
am Ende aus.quelle
(🐂👍) Ox ++, 248 Bytes (62 Zeichen)
Sprache, an der ich arbeite. Fügen Sie hier den Code ein .
quelle