var QUESTION_ID=54123;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 getAnswers(){jQuery.ajax({url:answersUrl(page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),e.has_more?getAnswers():process()}})}function shouldHaveHeading(e){var a=!1,r=e.body_markdown.split("\n");try{a|=/^#/.test(e.body_markdown),a|=["-","="].indexOf(r[1][0])>-1,a&=LANGUAGE_REG.test(e.body_markdown)}catch(n){}return a}function shouldHaveScore(e){var a=!1;try{a|=SIZE_REG.test(e.body_markdown.split("\n")[0])}catch(r){}return a}function getAuthorName(e){return e.owner.display_name}function process(){answers=answers.filter(shouldHaveScore).filter(shouldHaveHeading),answers.sort(function(e,a){var r=+(e.body_markdown.split("\n")[0].match(SIZE_REG)||[1/0])[0],n=+(a.body_markdown.split("\n")[0].match(SIZE_REG)||[1/0])[0];return r-n});var e={},a=1,r=null,n=1;answers.forEach(function(s){var t=s.body_markdown.split("\n")[0],o=jQuery("#answer-template").html(),l=(t.match(NUMBER_REG)[0],(t.match(SIZE_REG)||[0])[0]),c=t.match(LANGUAGE_REG)[1],i=getAuthorName(s);l!=r&&(n=a),r=l,++a,o=o.replace("{{PLACE}}",n+".").replace("{{NAME}}",i).replace("{{LANGUAGE}}",c).replace("{{SIZE}}",l).replace("{{LINK}}",s.share_link),o=jQuery(o),jQuery("#answers").append(o),e[c]=e[c]||{lang:c,user:i,size:l,link:s.share_link}});var s=[];for(var t in e)e.hasOwnProperty(t)&&s.push(e[t]);s.sort(function(e,a){return e.lang>a.lang?1:e.lang<a.lang?-1:0});for(var o=0;o<s.length;++o){var l=jQuery("#language-template").html(),t=s[o];l=l.replace("{{LANGUAGE}}",t.lang).replace("{{NAME}}",t.user).replace("{{SIZE}}",t.size).replace("{{LINK}}",t.link),l=jQuery(l),jQuery("#languages").append(l)}}var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",answers=[],page=1;getAnswers();var SIZE_REG=/\d+(?=[^\d&]*(?:<(?:s>[^&]*<\/s>|[^&]+>)[^\d&]*)*$)/,NUMBER_REG=/\d+/,LANGUAGE_REG=/^#*\s*([^,]+)/;
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>
CJAM,
3331 octetsTestez-le ici.
Explication
la source
2^64-1
.Java,
110109107 OctetsMon code se présente sous la forme d'une fonction lambda anonyme qui prend a
long
et anint
renvoie ensuite aString
.Classe testable complète
la source
(w,s)->
au lieu de cela,String w(long w,int s)
c'est une grosse économie dès le départ.Matlab,
8680 octetsMerci à Hoki pour sa suggestion, qui m'a conduit à me faire économiser 6 octets.
Exemple:
la source
de2bi
vous fera économiser quelques caractères de plus ;-)a='|-'
àa='-|'
. Et utilisezx=de2bi(typecast(W,'uint8'))+1;
de2bi
simplement le déplacement du9-
terme (utilisé pour l'inversion). Merci encore!Julia, 145 octets
Cela crée une fonction qui accepte deux entiers et s'imprime sur stdout.
Non golfé + explication:
C'est assez long et je suis sûr qu'il peut être beaucoup plus court. J'y travaille.
la source
J, 28 octets
Usage:
Explication (de droite à gauche):
Essayez-le en ligne ici.
la source
CJam,
302827 octetsEssayez-le en ligne dans l' interpréteur CJam .
la source
Python, 77
Pour chacune des
s*s
valeurs den
:(i,j)=(n/s,n%s)
(i%8,j%8)
8*(i%8)+(j%8)
w
en décalantw
autant d'espaces avec la droite et prenez le dernier bit avec&1
.n%s==0
En fait, tout cela finit par faire reculer le carrelage, car il lit
w
de la fin. Nous corrigeons cela en utilisant~n
à la place den
. J'ai plutôt essayé une approche récursive, mais elle s'est avérée un peu plus longue.L'expression
w>>~n/s%8*8+~n%s%8&1
est un miracle de priorité des opérateurs.la source
Python 2, 132 octets
Ce n'est certainement pas la solution la plus élégante, et elle est à peine plus courte que C, mais c'est un début. L'entrée est prise séparée par des virgules.
la source
C,
160135 octetsUn peu plus de golf peut être fait ici et a besoin d'une explication, mais je n'ai pas le temps pour le moment :)
Non golfé:
la source
stdlib.h
une inclusion explicite. Je n'ai pas été obligé de l'inclure plus tôt lorsque j'ai testé sur CentOS (je crois que c'est ce que je faisais). Maintenant sur Ubuntu, je ne peux pas le faire fonctionner sans compiler comme ça:gcc -include stdlib.h w.c
Pyth,
3130 octetsL'entrée doit être sur deux lignes, W alors S .
Essayez-le ici
Explication
la source