var QUESTION_ID=80586,OVERRIDE_USER=20283;function answersUrl(e){return"https://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"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:400px;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>
Réponses:
Pyth, 6 octets
Essayez-le en ligne ici .
la source
Gelée, 6 octets
Essayez-le en ligne!
la source
Octave, 29 octets
Explication
Exemple de run sur ideone .
la source
Python 3, 43 octets
Utilise la formule sur la page OEIS . Étonnamment, une fonction nommée est en quelque sorte moins chère ici en raison de l'affectation à
x
.Approche alternative pour 46 octets:
Malheureusement,
-~
est nécessaire car(0).bit_length()
est0
, mais même alors ce serait un octet trop long.la source
Julia, 27 octets
Essayez-le en ligne!
Comment ça marche
Étant donné que
*
la concaténation de chaînes dans Julia,prod
peut être utilisée pour concaténer un tableau de chaînes. Il prend éventuellement une fonction comme premier argument qu'il mappe sur le second avant de prendre le "produit" réel, toutprod(bin,0:n-1)
comme la chaîne de la représentation binaire de tous les entiers dans la plage souhaitée. Prendre la longueur avecendof
et diviser par n donne la moyenne.la source
Julia, 28 octets
Puisque
bin
ne mappe pas automatiquement sur les tableaux, nous utilisonsceil(log2(n))
pour obtenir le nombre de bitsn-1
. Cela fonctionne bien parce que laa:b
notation de Julia est inclusive aux deux extrémités, tout2:n
comme une plage de 2 àn
, mais nous calculons vraiment le nombre de bits pour les nombres dans la plage1:n-1
. Malheureusement, nous devons ajouter un supplément2
pour représenter 0.Essayez-le en ligne!
la source
MATL, 9 octets
Essayez-le en ligne!
Version modifiée avec tous les cas de test
Explication
la source
G/Q
de la fin.MATL, 9 octets
Essayez-le en ligne!
Explication
la source
Gelée, 8 octets
Pas un algorithme plus court mais intéressant, et ma première soumission Jelly:
la source
Gelée, 10 octets
D'après la suggestion du Sp3000.
Essayez-le ici.
Gelée, 11 octets
Pas très court mais j'ai besoin de quelques conseils.
Essayez-le ici.
En utilisant la même formule que dans la réponse de Sp3000 . (Ce n'est pas très difficile de l'obtenir vous-même, en différenciant la progression géométrique.)
la source
_BL$N
semblait assez long ...BL©2*2_÷+®
Java,
1359590 octetsla source
Python 3, 46 octets
Appelez ça comme
J'ai dû annuler la révision de la carte car elle a échoué pour l'entrée de 5
la source
05AB1E,
97 octetsCode:
Explication:
Essayez-le en ligne
Edit: sauvé 2 octets grâce à @Adnan
la source
C #, 87 octets
J'ai écrit une réponse C # parce que je n'en ai pas vu. Ceci est mon premier post à l'un de ceux-ci, alors faites-moi savoir si je fais quelque chose de mal.
la source
double
pourfloat
enregistrer un octet, ou avez-vous besoin de la précision?JavaScript (ES7),
3832 octetsUtilisation de la formule de @ sp3000 (la version précédente était une solution récursive). Version ES6 pour 34 octets:
Explication de la formule: considérons le cas de N = 55. Si nous écrivons les nombres binaires (verticalement pour économiser de l'espace), nous obtenons:
La taille de ce rectangle est nl donc la moyenne est juste l mais nous devons exclure les blancs. Chaque rangée de blancs est deux fois plus longue que la précédente, le total est donc de 2 + 4 + 8 + 16 + 32 = 64 - 2 = 2 l - 2.
la source
J,
211715 octetsDe 17 octets à 15 octets grâce à @Dennis.
Quelqu'un peut-il m'aider à jouer au golf? ...
Version non golfée
la source
%~>:@#@([:":10#.[:#:i.)-]
. Votre solution semble plutôt optimale.Perl 6 ,
3432 octetsExplication:
Tester:
la source
Dyalog APL , 14 octets
la source
Clojure,
716463 octetsIl semble que les ratios soient corrects selon Quels formats numériques sont acceptables en sortie?
(fn[n](/(inc(apply +(map #(.bitLength(bigint %))(range n))))n))
non golfé (et légèrement réécrit pour faciliter l'explication)
ancienne réponse utilisée (float):
(fn[n](float(/(inc(apply +(map #(..(bigint %)bitLength)(range n))))n)))
la sortie est comme:
la source
Minkolang 0,15 , 23 octets
Essayez-le ici!
Explication
Implémentation assez simple.
la source
JavaScript ES5, 55 octets
Explication
la source
Hoon , 71 octets
... Je suis presque sûr que c'est la première fois que j'utilise les noyaux à virgule flottante de Hoon. Il s'agit en fait d'une implémentation écrite en Hoon qui se propage à SoftFloat, car les seuls types de données dans Hoon sont des atomes et des cellules.
Créer une fonction qui prend un atome,
r
. Créez une liste à partir de [0 .. (r - 1)], cartographiez la liste en prenant le logarithme binaire du nombre, puis repliez cette liste avec++add
. Convertissez à la fois la sortie du pli etr
en@rq
(nombres à virgule flottante à quadruple précision) avec++sun:rq
, puis divisez-les l'une par l'autre.La chose la plus étrange dans cet extrait est
:.^rq
la fin.a:b
en Hoon signifie "évaluer a dans le contexte de b".++rq
est le noyau qui contient l'intégralité de l'implémentation quad-précision, comme une bibliothèque. Donc courir(sun 5):rq
c'est la même chose que faire(sun:rq 5)
.Heureusement, les noyaux de Hoon sont comme des poupées gigognes; lorsque vous évaluez le bras
++rq
pour obtenir le noyau, il y ajoute également tout le stdlib, de sorte que vous pouvez continuer à rouler et à tourner et à gouffre et toutes ces choses amusantes au lieu d'être coincé avec uniquement les bras définis dans++rq
. Malheureusement, rq redéfinit++add
être un ajout à virgule flottante à la place, sans avoirr
dans son contexte..
(tout le contexte actuel), cependant.Lors de l'évaluation d'une expression dans un contexte, le compilateur recherche d'abord la profondeur du membre. Dans notre cas,
a:[. rq]
il chercherait dans tout le contexte actuela
avant de passer à la rechercherq
. Il enadd
sera de même pour la fonction qui fonctionne sur les atomes au lieu des nombres à virgule flottante ... mais il en sera de mêmediv
. Hoon a également une fonctionnalité où l'utilisation^name
ignorera la première référence trouvée et recherchera la seconde.À partir de là, il utilise simplement le sucre syntaxique
a^b
égal à[a b]
pour évaluer notre extrait de code à la fois avec notre contexte actuel et la bibliothèque flottante à quadruple précision, ignorant la division atomique en faveur de++div:rq
.la source
En fait, 7 octets:
Essayez-le en ligne!
Explication:
S'il n'y avait pas un bug que je viens de découvrir, cette solution fonctionnerait pour 6 octets:
æ
est la commande moyenne intégrée.la source
Vitsy, 26 octets
Ceci est une première tentative, je reviendrai plus loin et ajouterai une explication plus tard.
Essayez-le en ligne!
la source
PowerShell v2 +, 64 octets
Mise en œuvre très simple de la spécification. Boucles de
0
à$n-1
avec|%{...}
. A chaque itération, nous entrons[convert]
notre numéro$_
dans une chaîne de base2
et prenons le sienlength
. Nous accumulons cela en$o
. Après les boucles, nous divisons simplement$o/$n
, laissant cela sur le pipeline, et la sortie est implicite.Tant que cela est, il est en fait plus court que la formule utilisée par Sp & autres, car
[math]::Ceiling()
il[math]::Log()
est ridiculement verbeux. La conversion de base dans PowerShell est dégoûtante.la source
Perl 5.10, 54 octets
Assez simple.
sprintf"%b"
est un bon moyen de sortir un nombre en binaire en Perl sans utiliser de bibliothèques supplémentaires.Essayez-le en ligne!
la source
CJam,
131211 octetsUn octet enregistré grâce à @ Sp3000 et un autre grâce à @ jimmy23013
Essayez-le en ligne!
Explication
Simple. Applique la définition.
la source
Jolf, 10 octets
Essayez-le ici!
Explication
la source
Swift, 72 octets
la source
J, 15 octets
Il s'agit d'un verbe monadique, utilisé comme suit:
Essayez-le ici!
Explication
J'ai implémenté la spécification de défi assez littéralement. Il existe d'autres approches, mais toutes se sont avérées plus longues.
la source