var QUESTION_ID=133109,OVERRIDE_USER=69148;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:290px;float:left}table thead{font-weight:700}table td{padding:5px} /* font fix */ body {font-family: Arial,"Helvetica Neue",Helvetica,sans-serif;} /* #language-list x-pos fix */ #answer-list {margin-right: 200px;}
<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 , 2 octets
Essayez-le en ligne! Entrée implicite.
S
est une plage indexée, ets
est la somme.la source
Husk , 1 octet
Essayez-le en ligne!
Builtin!
Σ
dans Husk est généralement utilisé pour obtenir la somme de tous les éléments d'une liste, mais lorsqu'il est appliqué à un nombre, il retourne exactementn*(n+1)/2
.la source
Σ
est un caractère unicode à deux octets sur ma machine. Je suppose que vous utilisez la page de code 1253? msdn.microsoft.com/en-us/library/cc195055.aspxPiet , 161 octets / 16 codels
Vous pouvez l'interpréter avec cet interprète Piet ou télécharger l'image sur ce site et l'exécuter là-bas. Pas sûr du nombre d'octets, si je pouvais le coder différemment pour réduire la taille.
Version agrandie de l'image source:
Explication
Le
highlighted
texte montre la pile actuelle (croissant de gauche à droite), en supposant que l'utilisateur entre5
:Entrer un nombre et le pousser sur la pile
Dupliquer ce numéro sur la pile
Poussez 1 (la taille de la zone rouge foncé) sur la pile
Ajouter les deux premiers chiffres
Multiplie les deux premiers chiffres
La zone noire permet de s'assurer que le curseur se déplace vers la droite jusqu'au code vert clair. Cette transition pousse 2 (la taille du vert foncé) sur la pile
Divise le deuxième nombre de la pile par le premier
Pop et sortie le nombre supérieur (interprété comme nombre)
En insérant une zone blanche, la transition est un
nop
, le noir piège notre curseur. Ceci termine l'exécution du programme.la source
Brain-Flak , 16 octets
Essayez-le en ligne!
C’est l’une des rares choses pour lesquelles la flak cérébrale est vraiment bonne.
Puisque c'est l'une des choses les plus simples que vous puissiez faire dans brain-flak et qu'il a beaucoup de visibilité, voici une explication détaillée :
la source
Oasis , 3 octets
Essayez-le en ligne!
Comment ça fonctionne
la source
Mathematica, 9 octets
Mathematica, 10 octets
Mathematica, 11 octets
Mathematica, 12 octets
Mathematica, 14 octets
(par @ user71546)
Mathematica, 15 octets
Mathematica, 16 octets
Mathematica, 17 octets
(par @Non un arbre)
Mathematica, 18 octets
Mathematica, 19 octets
Mathematica, 20 octets
(par @Non un arbre)
la source
Array[Boole[#2>=#]
&,{#,#}]~Total~2
&JavaScript (ES6), 10 octets
Exemple
Afficher l'extrait de code
la source
n*-~n/2
fonctionne aussi, mais seulement pourn < 2**31
Langage machine x86_64 (Linux),
9 à8 octetsPour l' essayer en ligne! compiler et exécuter le programme C suivant.
Merci à @CodyGray et @Peter pour -1.
la source
shr
place desar
, pour traiter votre sortie comme non signée (aucun changement dans la taille du code). (Repéré par @CodyGray et souligné dans sa réponse de 7 octetsadd
+loop
).mul %edi
ouimul %edi
(chaque 2B) au lieu du formulaire 3B à deux opérandes. Cela frappe EDX avec le résultat dans la moitié haute, mais ça va. Multi-opérande aimul
été introduit plus tard que le formulaire à un opérande et possède un opcode de 2 octets avec un0F
octet d'échappement. Chacune des trois options produira toujours le même résultateax
, seule la moitié supérieure dépend de la signature contre la non-signature.Python 2 ,
2416 octets-8 octets grâce à FryAmTheEggman.
Essayez-le en ligne!
la source
C # (.NET Core) , 10 octets
Essayez-le en ligne!
la source
Java (OpenJDK 8) , 10 octets
Essayez-le en ligne!
la source
Octave ,
2219 octetsParce que les opérations arithmétiques sont ennuyeuses ...
Essayez-le en ligne!
Explication
Étant donné
n
, cela crée une matricen
×n
avec toutes les entrées égales au nombre e ; fait des entrées en dessous de la diagonale zéro; et affiche le nombre de valeurs non nulles.la source
@(n)sum(1:n)
sum
.Gelée , 2 octets
Essayez-le en ligne!
Explication
Gauss sum, 3 octets
Explication
la source
APL, 3 octets
Essayez-le en ligne!
+/
- somme (réduction+
),⍳
- plage.la source
1+
1
donc je n'ai pas précisé. sa commune ici pour spécifier que lors de l'utilisation⎕IO←0
(et il ne fait pas partie du nombre d'octets)Haskell , 13 octets
C'est le plus court (je
pensepensé):Essayez-le en ligne!
Direct,
17 à13 octetsMerci @ WheatWizard pour les
-4
octets!Essayez-le en ligne!
Pointfree direct, 15 octets
Merci @nimi pour l'idée!
Essayez-le en ligne!
Pointfree via
sum
, 16 octetsEssayez-le en ligne!
Récursivement,
2218 octetsMerci @maple_shaft pour l'idée et @Laikoni pour l'avoir jouée au golf!
Essayez-le en ligne!
Standard
fold
, 19 octetsEssayez-le en ligne!
la source
Étoilé ,
2722 octets5 octets sauvés grâce à @miles !
Essayez-le en ligne!
Explication
la source
05AB1E , 2 octets
Essayez-le en ligne!
Comment ça fonctionne
Somme Gauss, 4 octets
Essayez-le en ligne!
Comment ça fonctionne
la source
ÝO
travaille aussi et signifiehello
.Java (OpenJDK 8) , 10 octets
Essayez-le en ligne!
n->n*(n+1)/2
J'ai pris un moment pour jouer au golf parce que je suis lent.Mais ce n'est pas une vraie réponse Java. Ce n'est certainement pas assez verbeux.
Pas mal, mais on peut faire mieux.
J'aime Java.
la source
Chèque , 5 octets
Check n'est même pas une langue de golf, mais il bat CJam!
Essayez-le en ligne!
Explication:
Le numéro saisi est placé sur la pile.
:
le duplique à donnern, n
. Il est ensuite incrémenté avec)
, donnantn, n+1
.*
multiplie les deux ensemble, puis$
divise le résultat par 2.p
imprime le résultat et le programme se termine.la source
MATL , 2 octets
Essayez-le en ligne!
Pas content smiley.
la source
Taxi , 687 octets
Essayez-le en ligne!
Non-golfé avec des commentaires:
Il faut 22,6% moins d'octets à boucler qu'à utiliser
x*(x+1)/2
la source
Julia, 10 octets
Essayez-le en ligne!
11 octets (fonctionne également sur Julia 0.4)
Essayez-le en ligne!
la source
Brainfuck, 24 octets.
Les E / S sont traitées comme des octets.
A expliqué
la source
,,, 6 octets
Explication
Si j'implémente la gamme dans un proche avenir ...
la source
Retina , 13 octets
Essayez-le en ligne! Explication: Les première et dernière étapes ne sont que des conversions ary décimales unaires. L'étage intermédiaire remplace chacun
1
par le nombre de1
s à sa gauche plus un autre1
pour le1
lui - même, en comptant ainsi de1
àn
, en sommant les valeurs implicitement.la source
> <> , 7 + 3 = 10 octets
Calcule n (n + 1) / 2 .
3 octets ajoutés pour l' indicateur -v
Essayez-le en ligne!
Ou si l’entrée peut être considérée comme un code de caractère:
> <> , 9 octets
Essayez-le en ligne!
la source
(n^2+n)/2
) correspond également à 7 octets:::*+2,n
dc , 7 octets
OU
OU
Essayez-le en ligne!
la source
PHP, 19 octets
using builtins, 29 bytes:
boucle, 31 octets:
la source
for(;$argn;$s+=$argn--);echo$s;
Cubix ,
12 à10 octetsVersion initiale
Essayez-le en ligne!
Explication
Développé sur un cube, le code ressemble à ceci:
Le pointeur d'instruction (IP) commence à l'est
I
, en direction de l'est. Il continue de se déplacer vers l’est jusqu’à atteindre le/
miroir, qui le reflète au nord. Lorsque l'IP atteint le haut du code, il passe à la dernière ligne.
de la troisième ligne, en direction du sud. Ensuite, vous passez à l’avant.
-dernière ligne de la dernière ligne en direction du nord. Ensuite, il atteint à/
nouveau le miroir, qui le reflète vers l'est, mais le prochain/
réfléchit à nouveau vers le nord. Cette fois, l’IP passe à l’avant-dernière ligne.
de la troisième ligne, puis à la dernière.
de la dernière ligne.Les instructions sont exécutées dans l'ordre suivant.
la source
Code machine x86-64, 7 octets
Les octets ci-dessus définissent une fonction qui accepte un seul paramètre
n
et renvoie une valeur contenant la somme de tous les entiers allant de 1 àn
.Il est écrit dans la convention d'appel Microsoft x64 , qui transmet le paramètre dans le
ECX
registre. La valeur de retour est laissée à l'EAX
intérieur, comme toutes les conventions d'appel x86 / x86-64.Mnémoniques d'assemblées non golfées:
Essayez-le en ligne!
(L'appel de fonction C à cet emplacement est annoté avec un attribut qui force GCC à l'appeler en utilisant la convention d'appel de Microsoft utilisée par mon code d'assembly. Si TIO avait fourni MSVC, cela ne serait pas nécessaire.)
Selon les normes inhabituelles du code golf, vous voyez que cette approche de boucle itérative est préférable aux approches qui utilisent la formule mathématique plus saine (
n(n+1) / 2
), même si elle est évidemment beaucoup moins efficace en termes de vitesse d’exécution.En utilisant la théorie des nombres, la mise en œuvre de ceilingcat peut toujours être battue d'un octet. Chacune de ces instructions est essentielle, mais il existe un codage légèrement plus court
IMUL
qui utiliseEAX
implicitement comme opérande de destination (en fait, il utiliseEDX:EAX
, mais nous pouvons simplement ignorer les 32 bits supérieurs du résultat). C’est seulement 2 octets à encoder, au lieu de 3.LEA
prend également trois octets, mais il n’ya vraiment aucune solution, car nous devons incrémenter tout en préservant la valeur initiale. Si nous faisions uneMOV
copieINC
, nous serions à 4 octets. (En x86-32, oùINC
est seulement 1 octet, nous serions aux mêmes 3 octets queLEA
.)Le dernier décalage à droite est nécessaire pour diviser le résultat en deux et est certainement plus compact (et plus efficace) qu'une multiplication. Cependant, le code devrait réellement être utilisé à la
shr
place desar
, puisqu'il suppose que la valeur d'entréen
, est un entier non signé . (Cette hypothèse est bien sûr conforme aux règles, mais si vous savez que l'entrée est non signée, vous ne devriez pas effectuer de décalage arithmétique signé, car le bit supérieur défini dans une grande valeur non signée entraînera le résultat. être incorrect.)Maintenant, seulement 8 octets (merci à Peter Cordes). Pourtant, 8> 7.
la source
imul ecx
oumul ecx
fonctionnerait et économiserait un octet dans la mise en oeuvre en forme fermée. Je n'ai pas remarqué ça tout de suite. J'étais sur le point de dire que la performance et la taille du code étaient optimales avant de réaliser qu'uneax
opérande implicite convenait.add
+loop
serait plus court qu'enimul
regardant l'autre réponse. Bien qu'il y ait une convention d'appel standard qui passe le premier argumentecx