var QUESTION_ID=82815,OVERRIDE_USER=48934;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>
Réponses:
M ,
96 octetsMerci à FryAmTheEggman pour avoir économisé 3 octets! Code:
M a un énorme avantage ici, car il fonctionne avec des fractions plutôt qu'avec des flottants. Explication:
Utilise l' encodage Jelly . Essayez-le en ligne! .
En outre, il existe une solution à 4 octets , qui produit parfois un zéro non significatif (par exemple
280 -> 0280
). Je ne sais pas si cela est autorisé ou non:Essayez-le en ligne! .
la source
g¹
calcule le diviseur commun le plus gratifiant de la fraction et n . L'utilisationg1
serait probablement plus claire. 2.V
transforme la fraction en une chaîne et l'évalue niladiquement.<num>/
est (non cumulatif) réduit par un opérateur niladique. C'est un non-sens, mais comme il n'y a qu'un seul nombre (l'argument implicite 0 ), il ne fait tout simplement rien. Le lien suivant, le dénominateur, est niladique, donc la valeur de retour précédente est imprimée implicitement et remplacée par cette nilade.Julia, 22 octets
Une fonction anonyme.
la source
n->sum(inv,1//1:n).den
Mathematica, 27 octets
Une fonction anonyme.
Par exemple:
la source
Python 2,
6967 octetsTestez-le sur Ideone .
Comment ça fonctionne
Soit H (n) la somme des inverses multiplicatifs des n premiers entiers positifs. À tout moment, nous avons que a / b = 1 + H (k - 1) . En fait, a , b et k sont tous initialisés à 1 et 1/1 = 1 = 1 + H (0) .
Nous répétons l'extrait de code
(sous forme de chaîne) n (entrée) fois et exécutez le résultat. À chaque étape, nous mettons à jour a , b et k en utilisant l'identité a / b + 1 / k = ak / bk + b / bk = (ak + b) / bk .
Une fois toutes les copies exécutées, a / b = 1 + H (n) , qui a le même dénominateur que H (n) .
La forme entièrement réduite de a / b est (a ÷ pgcd (a, b)) / (b ÷ pgcd (a, b)) . Au lieu de calculer le plus grand diviseur commun, nous initialisons r à 1 et continuons à incrémenter r jusqu'à ce que ra soit un multiple de b .
De toute évidence, cela fait de ra le plus petit multiple commun de a et b . Puisque gcd (a, b) · lcm (a, b) = ab , nous avons que b ÷ gcd (a, b) = lcm (a, b) ÷ a = ra ÷ a = r , faisant de r la sortie souhaitée.
la source
Haskell, 52
Si le fichier est chargé dans GHCI, f peut être utilisé comme fonction.
la source
import
minuscules? Il enregistre un octet pour utiliser unmap
au lieu d'une compréhension:sum$map(1%)[1..n]
Gelée, 9 octets
Essayez-le ici.
la source
MATL ,
1413 octetsEssayez-le en ligne!
Explication
Pour l'entrée N , la sortie est délimitée par N ! (factorielle de N ). Le code calcule n / k pour n = 1, ..., N ! et pour k = 1, ..., N . Il additionne ensuite k , ce qui donne le nombre harmonique multiplié par chaque n . Le résultat souhaité est l'indice n de la première de ces valeurs qui est un entier.
la source
Rubis,
5747 octetsMerci à Kevin Lau d' avoir raccourci cela de dix octets.
la source
1.to_r
afin que vous n'ayez pas besoin d'injecter et de convertir des chaînes. De plus, puisque la valeur par défaut de Rubyreduce
est d'utiliser le premier élément comme initial, et1/1=1
vous n'avez pas besoin de définir spécifiquement0
comme valeur initiale.Mathematica, 26 octets
Une fonction sans nom prenant
n
en entrée et renvoyant le dénominateur. Utilise l'astuce standard d'abusTr
(trace) pour additionner la liste des réciproques.la source
JavaScript (ES6), 88 octets
Fonctionne uniquement jusqu'à m = 20 en raison des limites de la précision numérique de JavaScript.
la source
05AB1E , 8 octets
Code:
Explication:
Il pourrait y avoir des problèmes de précision pour n> 19 en raison de la division de Python ... Utilise l' encodage CP-1252 .
Essayez-le en ligne! .
la source
Pari / GP , 30 octets
Essayez-le en ligne!
la source
J, 20 octets
Basé sur l'approche utilisée par la solution de @ Lynn .
Si la précision n'est pas nécessaire pour les grandes valeurs de n ou si nous pouvons supposer que n sera passé comme un entier étendu, suffixé par
x
, une solution plus courte peut être utilisée pour 15 octets .Usage
Explication
la source
Perl 6 ,
3632 octetsExplication:
Tester:
la source
Hoon , 95 octets
Créez une liste
[1...n]
, repliez-la avec++mul
pour la factorielle, créez une liste[n!/1, n!/2, ... n!/n]
et additionnez-la, trouvez GCD den!
et la liste et divisez la factorielle par ce nombre.Il y a probablement un moyen beaucoup plus simple de calculer le dénominateur, mais je ne peux pas le comprendre: /
la source
Python 3,
153 150 146142 octetsJe suis sûr que cela peut aller plus loin. Mais je suis nouveau ici
la source
Axiome, 34 octets
tester
la source
PHP, 81 octets
Essayez-le en ligne!
la source